Ruby 捕获所有异常而不开始救援
为了格式化回溯输出,我试图找到捕获所有异常的理想方法 我应该提到的是,其目的是提供一个简单的gem,它可以是Ruby 捕获所有异常而不开始救援,ruby,backtrace,Ruby,Backtrace,为了格式化回溯输出,我试图找到捕获所有异常的理想方法 我应该提到的是,其目的是提供一个简单的gem,它可以是所需的,并提供更易于阅读的回溯。因此,begin…rescue不是一个选项 到目前为止,我找到了两种方法,每种方法都有自己的问题: 使用,就像我一样 使用,就像我一样 TracePoint方法给了我比需要的灵活性更小的灵活性,而使用at_exit方法,我觉得我滥用了这个方法,特别是因为我还必须使用exit以防止打印原始回溯 因此,我的问题是: 有没有比上述两种方法更好的方法 使用退出时的-
所需的
,并提供更易于阅读的回溯。因此,begin
…rescue
不是一个选项
到目前为止,我找到了两种方法,每种方法都有自己的问题:
TracePoint
方法给了我比需要的灵活性更小的灵活性,而使用at_exit
方法,我觉得我滥用了这个方法,特别是因为我还必须使用exit代码>以防止打印原始回溯
因此,我的问题是:
有没有比上述两种方法更好的方法
使用退出时的
-除了使用退出之外,是否有其他方法防止任何回溯显示代码>
参考代码:
at_exit do
if $! and $!.class != SystemExit
show_errors $!
exit! 1
end
end
也许吧。看看我是怎么做到的
对。正如我在上面的链接中所做的那样,请执行以下操作:
$stderr.reopen(IO::NULL)
$stdout.reopen(IO::NULL)
有趣。重新打开的功能是什么?我知道它是为了防止原来的错误出现,但我不知道为什么它会产生这个结果。(我会试试你的宝石)。