如何在ruby中捕获方法的调用

时间:2014-06-04 17:35:45

标签: ruby

我想捕获一个方法的调用,然后显示输出。

class A 

end

如果我运行新的A.看它应该陷阱并打印'未知方法'。

我是语言新手

2 个答案:

答案 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