如何在 Spring Boot 中捕获所有异常?

How do I catch all exceptions in Spring Boot?

提问人:Stian Jørgensrud 提问时间:9/22/2023 更新时间:9/23/2023 访问量:109

问:

我想确保我的团队始终记录抛出的异常。有没有办法捕获Spring Boot应用程序中的所有异常(无论入口点如何)?

使用 (和 ) 的这个答案是这个问题的错误答案,因为它只捕获组件启动的代码的异常。代码可以通过许多不同的方式启动,例如,在从队列接收消息时运行带注释的方法。在 JmsListener 启动的代码中抛出的异常不会被 ControllerAdvice 中的处理程序捕获。@ControllerAdvice@RestControllerAdvice@Controller@JmsListener

异常 spring-jms

评论


答:

1赞 kakashi hatake 9/23/2023 #1

Spring Boot 集成模块通常带有可配置的错误处理程序机制。用户将能够为应用程序目的配置此处理程序。例如,可以通过为 JMS 侦听器容器工厂提供自定义错误处理程序来配置它,并且您可以按照指定的方式捕获侦听器中的所有错误。

如果正在考虑围绕应用程序进行更常规的配置,则应为此使用应用程序检测解决方案,并遵循整个应用程序。像 Jaeger 或其他类似工具。此方法更有可能在基础结构级别,并由外部应用程序作为代理进行管理。

评论

0赞 Stian Jørgensrud 9/25/2023
好。仪器似乎是通用包罗万象的方法。Jaeger 文档提到了我们的日志聚合器支持的 OpenTelemetry