2015-12-23 29 views
5

実行時にスローされる例外(処理済および未処理)がすべて通知される方法はありますか?スローされた例外(処理された例外も含む)についての通知を取得する

私が望むのは、プログラムの実行中に発生するすべての例外を記録するロガーメカニズムです。私はこのロガーで例外を処理する必要はありません、私は例外がスローされるイベントを記録できるようにしたいです。
事は、私が何かについてExceptionListenerを読んだ

...私は私が新しい例外をスローしたときに関数を呼び出すことはできませんだけでなく、したがって、すべてのシステム例外を含めたいということですが、彼らはのために意図されているように見えます別の仕事。

これはどのように考えられるでしょうか?

+0

この回答はあなたが望むようにするかもしれません:http://stackoverflow.com/a/20284294/611819 – dnault

+0

有望なようです...しかし、これは私がtry/catchブロックで処理される例外を得ることができます。 – Raven

+0

なぜあなたはこれをしたいですか?例外が発生し、通常の処理の一部として処理される場合、誰にも気にする必要があります。すべての例外をキャッチしてそれらをスローするコードがある場合は、そのコードを修正してよりうまく動作するようにする必要があります。 – Raedwald

答えて

2

例外は通常、(スローされるのではなく)キャッチされたときにログに記録されるため、その結果もログに記録される可能性があります。つまり、いくつかの例外は結果をもたらさないため、調査は必要ありませんが、その他の例外は非常に重要であり、発生するたびに調査する必要があります。したがって、優れたログファイルは、例外が発生しただけでなく、例外が捕捉された後にのみ認識される(ビジネスの)影響も伝えます。これには、処理時に例外が記録される必要があります。

したがって、実行中のプログラムによってスローされたすべての例外をインターセプトするJava APIはありません。

ただし、スローされた例外をすべて調べるのに役立つことがあります。デバッガをJVMに接続し、すべてのサブクラスに対して「例外ブレークポイント」をjava.lang.Throwableに設定することでそうすることができます。あるいは、APIの境界を越えるすべての例外を記録するインターセプタを作成することができます(任意の合理的な依存性注入コンテナがそれを助けることができます)。または、Instrumentation APIを使用して、クラスがロードされるときにクラスにログを追加することができます。

関連する問題