像这样的一些代码:
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 也不起作用,因为我无法吞下抛出的异常。
那么,我怎样才能在异常发生时拦截它呢?忽略它的传播。
非常感谢任何回复。