春季AOP抛出与围绕建议
2022-09-02 01:30:19
当尝试实现一个Aspect时,它负责捕获和记录某种类型的错误,我最初认为使用AfterThrowing建议这是可能的。然而,他的建议似乎没有抓住异常,而只是提供了一个额外的切入点来做一些例外的事情。
唯一能抓住有问题的异常的建议是AroundAdvice - 要么是这样,要么是我做错了什么。
任何人都可以断言,如果我想抓住异常,我必须使用AroundAdvice?我使用的配置如下:
@Pointcut("execution(* test.simple.OtherService.print*(..))")
public void printOperation() {}
@AfterThrowing(pointcut="printOperation()", throwing="exception")
public void logException(Throwable exception) {
System.out.println(exception.getMessage());
}
@Around("printOperation()")
public void swallowException(ProceedingJoinPoint pjp) throws Throwable {
try {
pjp.proceed();
} catch (Throwable exception) {
System.out.println(exception.getMessage());
}
}
请注意,在此示例中,我捕获了所有异常,因为它只是一个示例。我知道吞下所有异常是不好的,但是对于我当前的用例,我希望只记录一种特殊类型的异常,同时避免重复的日志记录逻辑。