Ruby 异常跟踪
Posted
技术标签:
【中文标题】Ruby 异常跟踪【英文标题】:Ruby exception trace 【发布时间】:2015-01-05 23:21:47 【问题描述】:我有 Ruby 函数,像这样:
module MyModule
def function
raise ArgumentException if true
end
end
然后,我在其他一些嵌套函数中使用这个函数,就像
def upperfunction
MyModule::function
end
所以,如果我在 irb 中调用 upperfunction,我希望看到像这样的完整跟踪
第2行upperfunction.rb
第 3 行 my_module.rb
参数错误
但我只得到
第 3 行 my_module.rb
参数错误
我应该怎么做才能看到完整的踪迹?
【问题讨论】:
看看caller
,正如另一个问题***.com/questions/6322524/…中所指出的那样
【参考方案1】:
试试$@
。其中包含最后一个异常的回溯(最后一个异常对象在$!
中)。
另一种解决方案是使用更好的 ruby shell pry,您可以在其中使用 wtf!
命令查看回溯(感叹号越多,显示的回溯越多)
【讨论】:
Mb,这是一个很好的解决方案。但是为什么当你使用一些著名的库,如 rack 或 activerecord 时,你会看到所有东西的完整痕迹?我希望我的图书馆也这样做!或者,我应该在任何地方再次捕捉并扔掉? 我不是 100% 确定你的意思,但我认为这里的问题是你在 irb 中调用你的方法,这会抑制一些回溯,而 rack 和 activerecord 会吐出到处都是。以上是关于Ruby 异常跟踪的主要内容,如果未能解决你的问题,请参考以下文章