Spring AOP:如何使用@After 判断方法是否抛出异常?

Spring AOP: How to determine if method threw an exception using @After?

Spring docs 说:

After advice must be prepared to handle both normal and exception return conditions.

@After("com.xyz.myapp.SystemArchitecture.dataAccessOperation()")
public void doReleaseLock() {
    // ...
}

我想知道 dataAccessOperation 是正常完成还是出现异常。不幸的是,上面的代码片段是有史以来最无用的文档 运行。我知道我可以单独使用 AfterReturningAfterThrowing,甚至 Around,但这不是重点。既然After存在,我应该可以使用它。

文档想说的是,无论是否抛出异常,您的 @After 建议都应该有效。这并不意味着您可以从建议中确定它。如果应该做不同的事情,

  • 使用 @AfterReturning@AfterThrowing,如果不触及控制流并且您的建议不会处理任何异常,
  • 或使用 @Around 建议,如果你想真正捕获和处理抛出的异常 and/or 在调用之前修改方法参数或在调用之后修改 return 值或完全跳过方法执行.