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 に答える