0

メソッドにタイマーを追加するために、衣装注釈付きの AOP を使用しています。

  @Around(value = "@annotation(benchmark)")
  public void func(final ProceedingJoinPoint joinPoint, final Benchmark benchmark) throws Throwable {
       //wrap the call to the method with timer
       final long t0 = System.currentTimeMillis();
       logger.error(t0 + " ");
       joinPoint.proceed();
       final long elapsed = (System.currentTimeMillis() - t0);
       logger.error(elapsed + " ");
  }

アノテーション付きメソッドから例外がスローされたときに何かできるようにしたい。そして、私は正しい方法が何であるかわかりません...

私は読んで、あることを見ました:

@AfterThrowing(pointcut = "execution(* com.mycompany.package..* (..))", throwing = "ex")

私が理解している限り@AfterThrowing、私が望むものは得られません。ベンチマーク注釈で注釈が付けられたメソッドからのみ例外をキャッシュする必要があります。

何か案が?

ありがとう!

4

2 に答える 2

2

実行中に、キャッチする注釈を指定できます。たとえば、次のようになります。

@AfterThrowing(pointcut = "execution(@org.aspectj.lang.annotation.Around * com.mycompany.package..* (..))", throwing = "ex")
于 2013-04-22T08:10:23.257 に答える