NoMethodError

NoMethodError

수신자(receiver)에 메서드가 정의되어 있지 않고, 그 수신자가 method_missing으로도 응답하지 않을 때 발생하는 예외예요.

출처: Ruby 3.3 API

본문

NoMethodError는 어떤 수신자에 대해 메서드를 호출했는데, 그 수신자가 해당 메서드를 정의하고 있지 않으면서 method_missing으로도 처리하지 않을 때 발생해요.

존재하지 않는 메서드를 호출하면 이렇게 되죠.

"hello".to_ary

다음과 같은 예외가 발생해요:

NoMethodError: undefined method `to_ary' for an instance of String

Public Class Methods

new(msg=nil, name=nil, args=nil, private=false, receiver: nil) → no_method_error

NoMethodError 객체를 새로 만들어요. name은 호출하려던 메서드 이름, args는 호출할 때 넘겨주려던 인자, private는 private 메서드를 호출하려다 실패했는지 여부, receiver:는 호출 대상이었던 수신자 객체를 각각 담을 수 있어요.

더 알아보기

  • 이름이 유효하지 않거나 정의되지 않았을 때 발생하는 NameError 문서도 함께 보면 좋아요.
  • Object#method_missing로 없는 메서드 호출을 가로채는 방법도 살펴볼 수 있어요.