処理されていないすべての例外を処理 (単純なログ書き込み) することは可能ですか?
より詳細には、コード内の任意の場所で発生した例外をすべてログに記録し、例外をログに記録してから続行する必要があります(明らかに、より多くの例外が発生する可能性があります!)。
処理されていないすべての例外を処理 (単純なログ書き込み) することは可能ですか?
より詳細には、コード内の任意の場所で発生した例外をすべてログに記録し、例外をログに記録してから続行する必要があります(明らかに、より多くの例外が発生する可能性があります!)。
デフォルトのキャッチされていない例外ハンドラーを使用して、処理されていない例外をキャッチできます。
スレッドまたはスレッドグループごとに特定のハンドラーを設定することもできます。
これにはAOP(アスペクト指向プログラミング)を使用できます。具体的には、すべての例外をログに記録するアスペクトを作成できます。
Springを使用している場合は、AfterThrowingAdviceAnnotationを使用できます。
ここにあなたを助けることができるコードがあります:
public class MyDefaultExceptionHandler extends DefaultExceptionHandler
{
private UncaughtExceptionHandler defaultUEH;
public MyDefaultExceptionHandler()
{
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread t, Throwable e)
{
//print anything you wish about the Throwable e :getStackTrace(), getCause(), getClass()...
defaultUEH.uncaughtException(t, e); //this will call the default handling of the exception (crash...)
}
}
…
//in the main app:
Thread.setDefaultUncaughtExceptionHandler(new MyDefaultExceptionHandler());