java – 为什么@AfterReturning只在@AfterThrowing异常后执行?

我有以下内容:

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

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

我观察到这种对我没有意义的行为:

>如果此切入点捕获的方法未引发异常,则执行@AfterReturning
>如果方法抛出异常,@ AfterReturning仅在@AfterThrowing存在且先执行时执行

我想要完成的是在方法执行结束时运行一些代码,无论是否抛出异常.但是现在这个代码运行了两次(如果我同时有afterReturning和afterThrowing)或根本没有(如果我只有afterReturning),如果抛出异常.

有什么建议?

谢谢,
彼得·

解决方法:

如果要在方法之后执行代码,无论是否抛出异常,都需要使用@After代替.

上一篇:CSS的优先级和继承问题


下一篇:java – spring和aspectj,非代理对象的拦截方法