【问题标题】:Why raise an exception with the current method removed from the stack trace?为什么从堆栈跟踪中删除当前方法时引发异常?
【发布时间】:2012-07-02 01:12:23
【问题描述】:

当引发 Ruby 异常时,我知道我可以使用 caller 方法生成删除当前方法调用的回溯:

raise SomeException, "error message", caller

根据pickaxe book,这是“在库模块中经常有用的”。

为什么要从堆栈跟踪中删除当前方法?似乎我可以获得的关于错误发生的确切位置的信息越多,就越容易追踪。

【问题讨论】:

    标签: ruby exception


    【解决方案1】:

    对我来说似乎有用的原因是堆栈跟踪可以最清楚地向库的用户指出问题的根源。我的Programming Ruby 没有提供比你更多的洞察力,但是Ruby 编程语言 证实了我的感受:

    我们在这里提出的异常的目的是指出调用 ... 方法的问题,而不是方法内部的代码。 ...如果我们想直接指向问题代码,我们可以提供自定义堆栈跟踪作为raise 的第三个参数...caller

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多