ArgumentError

ArgumentError

함수에 전달한 인자가 잘못됐을 때 Elixir가 던지는 예외가 바로 ArgumentError예요. 함수의 인자가 유효하지 않다는 걸 알리고 싶을 때 직접 이 예외를 던질 수도 있어요.

출처: ArgumentError exception

본문

인자가 잘못됐을 때 예외가 어떻게 발생하는지 예를 들어 볼게요. Integer.to_string/1을 잘못된 인자로 호출하면 이 예외가 던져져요.

iex> Integer.to_string(1.0)
** (ArgumentError) errors were found at the given arguments:
...

ArgumentError 예외는 :message(타입은 String.t/0)라는 필드 하나를 가져요. 이 필드는 공개되어 있어서, ArgumentError 예외를 읽거나 만들 때 자유롭게 접근할 수 있어요.

예를 들어 여러분이 함수를 만들면서 인자 검증이 실패했을 때 호출자에게 명확하게 알리고 싶다면 다음과 같이 던질 수 있어요.

def divide(a, b) when b == 0 do
  raise ArgumentError, message: "cannot divide by zero"
end

이렇게 하면 호출자 입장에서 ArgumentError를 받아 :message 필드로 어떤 인자가 문제였는지 파악할 수 있어요. 이 예외는 Erlang/OTP 커널에서 많이 쓰이고, Elixir 표준 라이브러리 전반에서도 인자 검증 실패를 표현하는 표준 수단으로 자리 잡고 있어요.

더 알아보기