ruby 1.7 特性: 若调用了未定义的方法时,就会引发该异常.
self.bar => -:1: undefined method `bar' for #<Object:0x401a6c40> (NoMethodError)
若不是以方法调用的形式出现的话, 就会引发NameError异常.
bar => -:1: undefined local variable or method `bar' for #<Object:0x401a6c40> (NameError)
NoMethodError.new(error_message[, name[, args]]) ((<ruby 1.8 特性>))生成并返回异常对象. args是调用方法的过程中使用的参数.
nom = NoMethodError.new("message", "foo", [1,2,3])
p nom.name
p nom.args
# => "foo"
[1, 2, 3]
args ((<ruby 1.8 特性>))以数组的形式返回方法调用过程中使用的参数.
begin
foobar(1,2,3)
rescue NoMethodError
p $!
p $!.name
p $!.args
end
# => #<NoMethodError: undefined method `foobar' for main:Object>
:foobar
[1, 2, 3]