我希望我的异常类之一能够获取在其上下文中引发异常的对象。例如,在半伪代码中
class Foo
def zorch!
raise MyException.new("d'oh!")
end
end
c = Foo.new
c.zorch!
我希望MyException#initialize
能够获得对象c
。
这可能可以self.send(:binding)
在#initialize
方法中以某种方式完成,但我还没有弄清楚如何:
Kernel.eval('self', self.send(:binding)).class.name
=> MyException # *not* 'Foo'
这是有道理的,因为 MyException 还没有被完全实例化并且self.send(:binding)
引用当前上下文而不是调用者的上下文。
那么如何访问调用者的上下文/绑定呢?