インターセプトを使用したコントローラーでの例外処理のデモを試していました@Finally
。
コントローラーで意図的に作り、ブロックNullPointerException
で例外をキャッチしようとしました。@Finally
私がこれを試したとき、それは動作します:
@Finally
static void log(Throwable e) {
if( e == null ){
Logger.info("Inside FInally: Action call was successful");
} else{
Logger.info("Inside Finally: Action call failed", e);
}
}
しかし、これを試してもうまくいきません:
@Finally
static void log(NullPointerException e) {
if( e == null ){
Logger.info("Inside FInally: Action call was successful");
} else{
Logger.info("Inside Finally: Action call failed", e);
}
}
@Catch
繰り返しますが、インターセプトを考慮すると、次の両方が機能します。
@Catch(value = Throwable.class , priority = 2)
public static void te(Throwable throwException){
.....
}
@Catch(value = NullPointerException.class , priority = 1)
public static void npe(Throwable throwNullPointerException){
.....
}
2 番目のシナリオが@Finally
傍受で機能しないのはなぜですか? 特定のサブクラスの例外を使用するのではなく、あらゆる種類の例外にスーパークラスのみ を使用することは強制ですか?Throwable
これについて教えてください。