短いバージョン:コードの特定のセクションでスローされた ものをすべてキャッチしjava.lang.Error
てログに記録し、まったくキャッチしなかったかのようにコールスタックを伝播できるようにするにはどうすればよいですか?
ロングバージョン...
java.lang.Error
コードのセクションで、それらをログに記録するためにすべてをキャッチしたいと思います。しかし、私はまたError
、コールスタックを上っていくように継続させたいので、動作はまったくキャッチしなかった場合と同じになります。
さらに、すべてをキャッチしてログに記録しjava.lang.Exception
、それらにもコールスタックを伝播させたいと思います。
私はこれを試しました...
} catch (Throwable e) {
e.printStackTrace();
throw e;
}
...しかし、それに関する問題は、スローするために呼び出しスタックの上位にあるすべてのメソッドを変更する必要がThrowable
あり、それらのメソッドの一部は変更するためのものではありません(私のメソッドはサードパーティフレームワークのメソッドによって呼び出されます)。
何か別のものを入れて投げるという、ある種のラッピングテクニックには満足しますが、まったく捕まえなかったかのように、自然な形で上向きに伝播Throwable
させたいと思います。java.lang.Error
提案?
編集: 「なぜ私はこれをしたいのですか?」と尋ねられました。これは私が明確にする良い質問だと思います。これは私の会社で使用するためのフレームワークです。システム管理者が含めるのを忘れている可能性があるのは、jarに含まれている他のフレームワークに依存します。その場合、コードの特定の場所にNoClassDefFoundErrorがあります。ただし、ブラウザにこのエラーが表示されるのはユーザーのみであり、サーバーログには表示されません。システム管理者がこのエラーに対処するための指示を持っているので、このエラーが発生したことをシステム管理者が知ることができるように、ログに記録したいと思います。