我有以下内容:

@AfterReturning("executionOfTrustedAnnotatedMethod()")
public void afterReturningFromTrustedMethodExecution() { ... }

@AfterThrowing(pointcut = "executionOfTrustedAnnotatedMethod()")
public void afterThrowingByExecutionOfTrustedAnnotatedMethod() { ... }

我观察到这种行为对我来说没有意义:
  • 如果此切入点捕获的方法未引发异常,则执行@AfterReturning
  • 如果该方法引发异常,则仅当存在@AfterThrowing时才执行@AfterReturning,并首先执行

  • 我要完成的工作是在方法执行结束时运行一些代码,而不管是否引发异常。但是现在,如果抛出异常,此代码将运行两次(如果我同时具有afterReturning和afterThrowing),或者根本不运行(如果我仅具有afterReturning)。

    有什么建议?

    谢谢,
    皮特

    最佳答案

    如果要在方法之后执行代码,而不管是否引发异常,则需要改用@After

    07-24 21:07