在提出Ruby异常时,我知道我可以使用caller
方法生成删除当前方法调用的回溯:
raise SomeException, "error message", caller
根据镐书,这“在图书馆模块中经常有用”。
为什么要从堆栈跟踪中删除当前方法?似乎关于错误发生的确切位置的信息越多,追踪就越容易。
答案 0 :(得分:3)
对我来说似乎有用的原因是堆栈跟踪可以最清楚地将库的用户指向问题的根源。我的 Programming Ruby 副本没有提供比你更多的见解,但 Ruby Programming Language 证实了我的感受:
我们在这里提出的异常的意图是指出调用...方法的问题,而不是方法内部的代码。 ...如果我们想直接指向问题代码,我们可以提供自定义堆栈跟踪作为
raise
的第三个参数...caller
。