Spring AOP AfterThrowing vs. Around Advice(Spring AOP AfterThrowing Vs.Above忠告)
问题描述
在尝试实现负责捕获和记录特定类型的错误的方面时,我最初认为使用AfterThrowing建议可以做到这一点。然而,他的建议似乎没有捕捉到异常,而只是提供了一个额外的入口点来处理异常。
唯一也能捕捉到有问题的异常的建议是一个AoundAdvices值--要么就是我做错了什么。
有人能断言,如果我真的想要捕捉异常,我必须使用AoundAdvicesTM吗?我使用的配置如下:
@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());
}
}
请注意,在本例中我捕获了所有异常,因为它只是一个示例。我知道只接受所有异常是不好的做法,但对于我当前的用例,我希望只记录一种特殊类型的异常,同时避免重复的日志记录逻辑。
推荐答案
Spring reference文档称:
"抛出建议后,当 匹配的方法执行通过以下方式退出 引发异常"
到那时,捕获异常已经太晚了,因为它已经被抛出,方法已经退出。您使用@COMPOVER建议所采用的方法是在方法退出之前实际捕获异常并处理它的唯一方法。
这篇关于Spring AOP AfterThrowing Vs.Above忠告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring AOP AfterThrowing Vs.Above忠告


基础教程推荐
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 降序排序:Java Map 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01