0

次のシグネチャを持つメソッドがあります

ポイントカットでキャッチした後に例外をログに記録したいのですが、今すぐコードを実行すると、コンソールに例外出力がスローされ、ポイントカットで定義されたメソッドに到達します。これは @AfterThoring アノテーションですが、@BeforeThrowing がないためです。注釈は利用できますか? 私に何ができるか提案してください

public void jingleBell(){
        System.out.println("Jingle Bell Job...");
        throw new RuntimeException("test error");
    }

ポイントカットで次のアドバイス

@AfterThrowing(pointcut = "execution(* com.dc.lnwsk.adapter.Search.jingleBell())", throwing = "ex")
            public void handleException(Throwable ex){
                    //Log exception
            }
4

1 に答える 1

4

例外は、ポイント カット メソッドを呼び出す前に新しいメソッドを呼び出すためmethodsに bye コードを変更 (織り込み) できる場所とは異なります。

例外は実行時の現象であり、JVM は何らかの例外がスローされることを事前に認識していないため、 @BeforeThrowing はありません。

例外シナリオを前もって知っている場合@Beforeは、ポイントカットメソッドを使用して例外シナリオを処理することをお勧めします。

于 2012-12-06T22:13:08.810 に答える