【发布时间】:2018-03-14 00:41:25
【问题描述】:
我正在为代理样式对象重新定义 method_missing。我希望能够抛出一个自定义的NoMethodError(或者如果NoMethodError是一个特殊的问题,我在下面使用了一个ArgumentError)给调用者更多关于为什么特定代理对象没有的信息没办法。
但是,当我尝试从 method_missing 抛出任何异常时,我进入了一个递归循环,最终导致 SystemStackError: stack level too deep。
我希望能够做这样的事情:
class X
define method_missing(symbol, *args)
raise ArgumentError("Here: #{symbol} ")
end
end
x = X.new
x.a # Raise an ArgumentError, not a SystemStackError
【问题讨论】:
标签: ruby method-missing