このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.2 リファレンスマニュアル

class NameError

[edit]

要約

未定義のローカル変数や定数を使用したときに発生します。

bar
# ~> NameError: undefined local variable or method `bar' for main:Object

目次

特異メソッド
インスタンスメソッド

継承しているメソッド

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"

インスタンスメソッド

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:Object>
  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:Object>
p err.to_s  # => "undefined local variable or method `foobar' for main:Object"
end