我正在尝试找到捕获所有异常的理想方法,以便格式化回溯输出。
我应该提一下,目的是拥有一个简单的gem,它可以只是required
并提供更容易阅读的回溯。因此,begin
... rescue
不是一种选择。
到目前为止,我找到了两种方法,每种方法都有自己的问题:
使用TracePoint
,就像我did here一样。
TracePoint
方法给我的灵活性低于所需的灵活性,使用at_exit
方法,我觉得我滥用这种方法,特别是因为我还必须使用exit!
来阻止来自印刷的原始回溯。
所以,我的问题是:
at_exit
- 除了使用exit!
之外,有没有办法阻止任何回溯显示?参考代码:
at_exit do
if $! and $!.class != SystemExit
show_errors $!
exit! 1
end
end
答案 0 :(得分:2)
pretty_debug
gem中完成的。是。正如我在上面的链接中所做的那样:
$stderr.reopen(IO::NULL)
$stdout.reopen(IO::NULL)