ArgumentError 클래스

ArgumentError 클래스

메서드에 넘긴 인자가 잘못됐는데, 그 상황에 어울리는 더 구체적인 예외 클래스가 없을 때 던져지는 예외예요. 메서드를 호출할 때 가장 흔히 만나는 예외 중 하나라서, 처음 배울 때 꼭 알아 두면 좋아요.

출처: Ruby 4.0 API

본문

인자가 잘못된 경우는 크게 두 가지로 나눌 수 있어요.

인자 개수가 맞지 않는 경우. 메서드가 받기로 한 것보다 많거나 적게 넘기면 발생해요. 예를 들어 Array#first는 인자를 하나만 받는데 두 개를 넘기면:

[1, 2, 3].first(4, 5)

이렇게 예외가 발생해요:

ArgumentError: wrong number of arguments (given 2, expected 1)

인자 자체가 받아들여지지 않는 경우. 개수는 맞아도 값이 성립하지 않는 경우예요. first에 음수를 넘기면:

[1, 2, 3].first(-4)

이렇게 발생해요:

ArgumentError: negative array size

두 경우 모두 "이 메서드가 기대한 인자와는 다른 걸 넘겼다"는 공통점이 있어요. 그래서 어떤 메서드가 어떤 인자를 기대하는지 모를 때 이 예외를 만나면, 보통 메서드 시그니처를 다시 확인하는 게 첫 단계예요.