簡體   English   中英

捕獲所有異常而無需立即救援

[英]Catch all exceptions without begin-rescue

我試圖找到一種理想的方式來捕獲所有異常,以格式化回溯輸出。

我應該提到的目的是擁有一個簡單的gem,它只是required並提供易於閱讀的backtrace。 因此, begin ... rescue不是一種選擇。

到目前為止,我發現有兩種方法可以解決此問題,每種方法都有其自身的問題:

  1. 像我在這里一樣使用TracePoint

  2. 像我在這里一樣使用at_exit

TracePoint方法給我的靈活性比所需的要少,並且使用at_exit方法時,我覺得我正在濫用此方法,尤其是因為我還必須使用exit! 以防止打印原始回溯。

因此,我的問題是:

  1. 有沒有比上述兩個更好的方法?
  2. 使用at_exit除了使用exit!之外,還有一種方法可以防止顯示任何回溯exit!

參考代碼:

at_exit do
  if $! and $!.class != SystemExit
    show_errors $!
    exit! 1
  end
end
  1. 也許。 看看我如何在pretty_debug gem中做到這pretty_debug
  2. 是。 正如我在上面的鏈接中所做的那樣,請執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM