gpt4 book ai didi

ruby - 如何让 ruby​​ 打印完整的回溯而不是截断的回溯?

转载 作者:数据小太阳 更新时间:2023-10-29 06:17:01 27 4
gpt4 key购买 nike

当我遇到异常时,它通常来自调用堆栈的深处。发生这种情况时,我通常会隐藏实际的违规代码行:

tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError)
from tmp.rb:10:in `s'
from tmp.rb:13:in `r'
from tmp.rb:16:in `q'
from tmp.rb:19:in `p'
from tmp.rb:22:in `o'
from tmp.rb:25:in `n'
from tmp.rb:28:in `m'
from tmp.rb:31:in `l'
... 8 levels...
from tmp.rb:58:in `c'
from tmp.rb:61:in `b'
from tmp.rb:64:in `a'
from tmp.rb:67

那个“... 8 levels...”的截断给我带来了很大的麻烦。我在谷歌搜索上没有取得多大成功:如何告诉 ruby​​ 我希望转储包括完整堆栈?

最佳答案

Exception#backtrace 包含整个堆栈:

def do_division_by_zero; 5 / 0; end
begin
do_division_by_zero
rescue => exception
puts exception.backtrace
raise # always reraise
end

(灵感来自 Peter Cooper 的 Ruby Inside 博客)

关于ruby - 如何让 ruby​​ 打印完整的回溯而不是截断的回溯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/376513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com