アプリケーションの1つのスレッドでキャッチされない例外がスローされた場合に呼び出される、Javaアプリケーションで1つのアプリケーションレベルUncaughtExceptionHandlerを定義したいと思います。スレッドのグループ(ThreadGroup)に対してキャッチされない例外を定義することが可能であり、実際にそれを使用していることはわかっていますが、独自のキャッチされない例外ハンドラーを定義していないスレッド、またはデフォルトの例外ハンドラーが定義されているスレッドのグループに関連付けられていません。
だから例えば私はこのようなものに到達したい:
1° LEVEL ---> Call thread own UncaughtExceptionHandler ---> 2° LEVEL Call Thread Group UncaughtExceptionHandler ---> 3° LEVEL Call application(default) UncaughtExceptionHandler
System.err
簡単に言うと、スタックトレースを(デフォルトの動作)に出力する代わりに、デフォルトのUncaughtExceptionHandlerをオーバーライドして、独自のハンドラーを定義したいと思います。
たとえば、C#.NETでは、アプリケーションのMain()メソッドで 未処理のスレッド例外イベントハンドラーを処理するのと同様のことを行います。
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Javaでもできますか?
JavaでデフォルトのUncaughtExceptionHandlerをオーバーライドするにはどうすればよいですか?