0

次のようなコード:

public class A {

    @Autoware
    private B b;  

    public void a() {
        //AAA: some logic process that maybe throw exception
        b.b();
    }

}

public class B {

    public void b() {
        //BBB: some logic process maybe also throw exception
    }

}

Aa() と Bb() の両方の例外はインターセプトする必要があるため、 @AfterThrowing アノテーションを使用してそれを行います。しかし問題は、他のコードで Aa() を呼び出し、Bb() で例外が発生した場合、アドバイスが 2 回実行されることです。Bb() で発生した例外が呼び出し元の Aa() に伝搬していたためです。

spring-amqp を使用しているため、例外を静かに飲み込むことはできません。上記のコードはコンシューマー側にあり、コンシューマーで発生した例外に基づくメッセージ処理が必要です。

スローされた例外を飲み込めないため、@Aroundも機能しません。

では、例外が発生したときに例外を傍受するにはどうすればよいですか? その伝播を無視します。

どんな返信でも大歓迎です。

4

0 に答える 0