0

我有个问题。

即:我正在使用spring aop来处理异常。其中一些是我在外部供应商交付的数据损坏时抛出的异常。我在指向特定类型的方面处理它们。比如这个。

@AfterThrowing(
    pointcut =
      "execution(*myClass.myDataProcessingMethod(..))",
    throwing = "ex"
  )
public void myAspectMethod(MyException ex) {
...
}

但是当我的数据处理工作中发生了一些不好的事情,并且不是错误的数据而是我的逻辑中的错误时,我想在实例上得到通知。所以我有第二个方面。

@AfterThrowing(
    pointcut =
      "execution(*myClass.myDataProcessingMethod(..))",
    throwing = "ex"
  )
public void myAspectMethod(Exception ex) {
  extraInformingService.informAdamAtOnce("shitjustgotreal");
} 

但是当 MyException 被抛出时,两个方面都会被触发,因为 MyException 是 Exception 的实例。

有没有办法只触发指向 MyException 的方法?

4

1 回答 1

1

最简单但不是很优雅的版本是这样的:

@AfterThrowing(
    pointcut =
      "execution(*myClass.myDataProcessingMethod(..))",
    throwing = "ex"
  )
public void myAspectMethod(Exception ex) {
  if(!ex instanceof Myexception){
      extraInformingService.informAdamAtOnce("shitjustgotreal");
  }
} 
于 2012-04-24T15:27:32.917 回答