【发布时间】:2013-08-31 04:40:31
【问题描述】:
我希望我的异常类之一能够获取在其上下文中引发异常的对象。例如,在半伪代码中
class Foo
def zorch!
raise MyException.new("d'oh!")
end
end
c = Foo.new
c.zorch!
我希望MyException#initialize能够获得对象c。
这可能可以在#initialize 方法中使用self.send(:binding) 以某种方式完成,但我还没有弄清楚如何:
Kernel.eval('self', self.send(:binding)).class.name
=> MyException # *not* 'Foo'
这是有道理的,因为 MyException 尚未完全实例化,self.send(:binding) 指的是当前上下文而不是调用者的上下文。
那么我如何访问调用者的上下文/绑定?
【问题讨论】:
-
您找到更好的解决方案了吗?
-
只是好奇,你为什么需要它?
-
我相信我想知道这样我就可以将来自异常对象的信息添加到我将要生成的报告中——但我现在完全忘记了。我想念 Digital 的 VMS 功能丰富的异常处理..