我想捕获一个方法的调用,然后显示输出。
class A
end
如果我运行新的A.看它应该陷阱并打印'未知方法'。
我是语言新手
答案 0 :(得分:3)
当您向对象发送消息时,该对象将执行它在方法查找路径中找到的第一个方法,该方法的名称与消息的名称相同。如果找不到任何此类方法,则会引发NoMethodError异常,除非您为该对象提供了名为method_missing
的方法。 method_missing
方法传递了不存在的方法的符号,在原始调用中传递的参数数组以及传递给原始方法的任何块。
class A
def method_missing(m, *args, &block)
puts "There's no method called #{m} here -- please try again."
super
end
end
答案 1 :(得分:0)
这已经触发了NoMethodError,默认情况下会停止你的程序。
NoMethodError: undefined method `see' for A:Class