未処理の例外に対して例外ハンドラを定義することはできますか? begin/rescue/endブロックにコードブロック全体をラップするのは面倒です。未処理の例外のハンドラの登録
4
A
答えて
10
at_exitの使用はいかがですか?例外が発生しても呼び出され、$!を使用して最後の例外をログに記録できます。ここで
は一例です。
at_exit {
puts "Last exception: (#{$!.inspect})"
puts "Backtrace: \n#{[email protected]}"
puts "Exiting..."
}
puts "my app..."
raise "Exception!"
http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-at_exit
+1
それはもともと私がそれを実装した方法ですが、私は$の価値について悪い仮定をしました!この考え方を見過ごした方が良い方法があるはずです。これは正しい解決法ですが、 'exit! 'の呼び出しの結果として期待される例外が' SystemExit'であるかどうかをチェックするために、 '$!'で 'kind_of?'を呼び出す必要があります。 – Matty
関連する問題
- 1. 未処理の例外
- 2. wpf未処理の例外
- 3. 未処理の例外
- 4. Webサービス未処理例外
- 5. Android未処理例外
- 6. マルチスレッド未処理例外
- 7. MonoDroid:未処理例外リカバリ
- 8. スレッドの未処理の例外のキャッチ
- 9. 0x523d14cf(msvcr100d.dll)での未処理の例外?
- 10. Windowsフォームの未処理の例外ログ
- 11. "msvcp90d.dll"の未処理の例外?
- 12. mscorlibの未処理の例外
- 13. Havokは未処理の例外
- 14. Global.asaxと未処理の例外
- 15. iOSで未処理の例外
- 16. 未処理の例外 - シルバー4.0
- 17. ofstream :: write()未処理の例外
- 18. OpenCV2.4.2 VideoCaptureの未処理例外
- 19. 未処理の例外をキャッチする
- 20. C++未処理の例外 - デバッグ方法
- 21. イメージのASP.NET MVC未処理例外?
- 22. 未処理の例外0x10012c5d(highgui110.dll)
- 23. 未処理の例外タイプするScriptException
- 24. Django未処理の例外応答ステータスコード
- 25. Erlangの登録処理
- 26. Netty例外処理 - ハンドラが例外をスローした後、何を?
- 27. GUIで未処理の例外を処理する
- 28. 未解決のコンパイル:未処理の例外の種類IOException
- 29. MSDNのASP.netユーザー登録ページの例外
- 30. webapp2ハンドラを介したGAE BlobStore例外の処理
うーん、任意の場所のうち、例外をスローする可能性のコードはありません、あまりにも汚い感じていますか? – maerics
@maericsある場合にはそうだと思いますが、きちんとシャットダウンして通知を送信する必要のあるデーモンで、未処理の例外(読み込み:バグ)をキャッチする必要があると想像してください。 – Matty
私はbegin/rescueの終わりにあなたのコード全体をラップすることは行く方法だと思うし、乱雑に感じるべきではありません。実際の作業をそれ自身の方法に因数分解することができます。したがって、ラップするか、何かを行う「主な」方法があります。 '始める。 executeCode();救助 ' – jrochkind