【发布时间】:2012-07-02 01:12:23
【问题描述】:
当引发 Ruby 异常时,我知道我可以使用 caller 方法生成删除当前方法调用的回溯:
raise SomeException, "error message", caller
根据pickaxe book,这是“在库模块中经常有用的”。
为什么要从堆栈跟踪中删除当前方法?似乎我可以获得的关于错误发生的确切位置的信息越多,就越容易追踪。
【问题讨论】:
当引发 Ruby 异常时,我知道我可以使用 caller 方法生成删除当前方法调用的回溯:
raise SomeException, "error message", caller
根据pickaxe book,这是“在库模块中经常有用的”。
为什么要从堆栈跟踪中删除当前方法?似乎我可以获得的关于错误发生的确切位置的信息越多,就越容易追踪。
【问题讨论】:
对我来说似乎有用的原因是堆栈跟踪可以最清楚地向库的用户指出问题的根源。我的Programming Ruby 没有提供比你更多的洞察力,但是Ruby 编程语言 证实了我的感受:
我们在这里提出的异常的目的是指出调用 ... 方法的问题,而不是方法内部的代码。 ...如果我们想直接指向问题代码,我们可以提供自定义堆栈跟踪作为
raise的第三个参数...caller。
【讨论】: