要約
未定義のローカル変数や定数を使用したときに発生します。
例bar
# ~> NameError: undefined local variable or method 'bar' for main
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
- Exceptionから継承している特異メソッド
- Exceptionから継承しているメソッド
特異メソッド
new(error_message = "", name = nil) -> NameError[permalink][rdoc][edit]new(error_message = "", name = nil, receiver:) -> NameError-
例外オブジェクトを生成して返します。
- [PARAM]
error_message: - エラーメッセージを表す文字列です
- [PARAM]
name: - 未定義だったシンボルです
- [PARAM]
receiver: - 原因となったメソッド呼び出しのレシーバです
err = NameError.new("message", "foo") p err # => #<NameError: message> p err.name # => "foo" - [PARAM]
インスタンスメソッド
local_variables -> [Symbol]Ruby 2.3.0 から[permalink][rdoc][edit]-
self が発生した時に定義されていたローカル変数名の一覧を返します。
内部での使用に限ります。
例def foo begin b = "bar" c = 123 d rescue NameError => err p err.local_variables #=> [:b, :c, :err] end end a = "buz" foo name -> Symbol | String | nil[permalink][rdoc][edit]-
この例外オブジェクトを発生させる原因となった変数や定数、メソッドの名前をシンボルで返します。ただし、不正な定数名を指定して Module#const_get を呼んだ場合など、シンボルにできない名前が原因のときは文字列で返すことがあります。名前が不明な場合は nil を返すこともあります。
例begin foobar rescue NameError => err p err # => #<NameError: undefined local variable or method 'foobar' for main> p err.name # => :foobar end receiver -> objectRuby 2.3.0 から[permalink][rdoc][edit]-
self が発生した時のレシーバオブジェクトを返します。
例class Sample def foo return "foo" end end bar = Sample.new begin bar.bar rescue NameError => err p err.receiver # => #<Sample:0x007fd4d89b3110> p err.receiver.foo # => "foo" end to_s -> String[permalink][rdoc][edit]-
例外オブジェクトを文字列に変換して返します。
例begin foobar rescue NameError => err p err # => #<NameError: undefined local variable or method 'foobar' for main> p err.to_s # => "undefined local variable or method 'foobar' for main" end