TypeError 클래스

TypeError 클래스

TypeError는 어떤 객체가 기대한 타입이 아닐 때 발생하는 예외예요. Ruby를 쓰다 보면 "타입이 안 맞는다"는 메시지와 함께 이 예외를 가장 흔하게 만나게 되는 편이에요.

출처: Ruby 4.0 API — TypeError

본문

예를 들어 배열에서 first 메서드에 인자 개수가 아니라 "문자열"을 넘기면, 정수를 기대한 자리에 문자열이 들어왔다는 TypeError가 발생해요.

[1, 2, 3].first("two")

위 코드는 다음과 같은 예외를 일으켜요.

TypeError: no implicit conversion of String into Integer

여기서 "no implicit conversion"은 "묵시적 변환이 없다"는 뜻이에요. 즉 Ruby가 문자열을 정수로 자동 변환해 줄 방법이 없으니, 타입을 명시적으로 맞춰서 다시 호출해야 한다는 의미로 읽으면 돼요.

관련 클래스

TypeErrorStandardError의 하위 클래스로, 대부분의 스크립트에서 rescue TypeError로 잡아서 처리할 수 있어요. 같은 계열의 ArgumentError(인자 수·종류가 틀릴 때), NoMethodError(메서드가 없을 때)와 함께 흔히 쓰는 표준 예외 중 하나예요.