我有以下内容:
@AfterReturning("executionOfTrustedAnnotatedMethod()")
public void afterReturningFromTrustedMethodExecution() { ... }
@AfterThrowing(pointcut = "executionOfTrustedAnnotatedMethod()")
public void afterThrowingByExecutionOfTrustedAnnotatedMethod() { ... }
我观察到这种对我没有意义的行为:
>如果此切入点捕获的方法未引发异常,则执行@AfterReturning
>如果方法抛出异常,@ AfterReturning仅在@AfterThrowing存在且先执行时执行
我想要完成的是在方法执行结束时运行一些代码,无论是否抛出异常.但是现在这个代码运行了两次(如果我同时有afterReturning和afterThrowing)或根本没有(如果我只有afterReturning),如果抛出异常.
有什么建议?
谢谢,
彼得·
解决方法:
如果要在方法之后执行代码,无论是否抛出异常,都需要使用@After代替.