捕获所有例外,而无需开始响应

  • 本文关键字:开始 响应 ruby backtrace
  • 更新时间 :
  • 英文 :


我正在尝试找到理想的方法来捕获所有例外,以格式化回溯输出。

我应该提到的是,要拥有一个可以是required并提供更易于阅读的backtrace的简单宝石。所以begin ... rescue不是一个选项。

到目前为止,我找到了两种方法,每种方法都有自己的问题:

  1. 使用TracePoint,就像我在这里一样。

  2. 使用at_exit,就像我在这里一样。

TracePoint方法给了我比所需的灵活性少,并且使用at_exit方法,我觉得我正在滥用此方法,尤其是因为我还必须使用exit!来防止原始的backtrace打印。

>

所以,我的问题是:

  1. 有比上面提到的两个更好的方法吗?
  2. 使用at_exit-除了使用exit!以外

参考代码:

at_exit do
  if $! and $!.class != SystemExit
    show_errors $!
    exit! 1
  end
end
  1. 也许。看看我在pretty_debug宝石中的做法。
  2. 是。就像我在上面的链接中所做的那样,做:

    $stderr.reopen(IO::NULL)
    $stdout.reopen(IO::NULL)
    

相关内容

最新更新