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() 中发生异常时,Advice 将执行两次!因为在 Bb() 中发生的异常正在传播给它的调用者 Aa()。

我不能默默地吞下异常,因为我使用spring-amqp,上面的代码在消费者端,我需要一些基于消费者发生的异常的消息处理。

@Around 也不起作用,因为我无法吞下抛出的异常。

那么,我怎样才能在异常发生时拦截它呢?忽略它的传播。

非常感谢任何回复。

4

0 回答 0