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
是正常完成还是出现异常。不幸的是,上面的代码片段是有史以来最无用的文档 运行。我知道我可以单独使用 AfterReturning
和 AfterThrowing
,甚至 Around
,但这不是重点。既然After
存在,我应该可以使用它。
文档想说的是,无论是否抛出异常,您的 @After
建议都应该有效。这并不意味着您可以从建议中确定它。如果应该做不同的事情,
- 使用
@AfterReturning
与 @AfterThrowing
,如果不触及控制流并且您的建议不会处理任何异常,
- 或使用
@Around
建议,如果你想真正捕获和处理抛出的异常 and/or 在调用之前修改方法参数或在调用之后修改 return 值或完全跳过方法执行.
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
是正常完成还是出现异常。不幸的是,上面的代码片段是有史以来最无用的文档 运行。我知道我可以单独使用 AfterReturning
和 AfterThrowing
,甚至 Around
,但这不是重点。既然After
存在,我应该可以使用它。
文档想说的是,无论是否抛出异常,您的 @After
建议都应该有效。这并不意味着您可以从建议中确定它。如果应该做不同的事情,
- 使用
@AfterReturning
与@AfterThrowing
,如果不触及控制流并且您的建议不会处理任何异常, - 或使用
@Around
建议,如果你想真正捕获和处理抛出的异常 and/or 在调用之前修改方法参数或在调用之后修改 return 值或完全跳过方法执行.