【问题标题】:How to get the class that raised an error如何获取引发错误的类
【发布时间】:2018-08-23 12:50:46
【问题描述】:

我有一个错误类:

module Error
  class Base < StandardError
    def initialize
      binding.pry
    end
  end
end

我从控制器引发了错误:

raise Error::Base

我想获取引发错误的类名或文件名。有没有办法做到这一点?

backtracecausebacktrace_locations 返回 nil

【问题讨论】:

  • 什么是base
  • @sawa 我认为意图是raise Error::Base
  • @engineersmnky 你可能是对的。如果是这样的话,那么OP就太草率了。
  • 对不起,输入错误。 raise Error::Base

标签: ruby-on-rails ruby exception


【解决方案1】:

您在构建异常时捕获了异常,在它实际引发之前 - 这就是它没有完全填充的原因。

如果您确实需要在此处捕获执行,您可以使用caller 来查看当前 堆栈跟踪,就像在任何其他方法中一样。在它被提出之前,您不会从异常中获得太多好处。

【讨论】:

  • 哦,我明白了我需要什么,但似乎我必须做一些逻辑才能找到正确的位置。谢谢!
猜你喜欢
  • 2012-07-01
  • 2017-10-02
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多