春季全局异常处理程序 - 不是 MVC

2022-09-03 08:03:25

常规的Spring(Boot)是否有办法进行全局异常处理,或者至少捕获任何未捕获的异常(例如,可能会随机发生)?RuntimeException

我已经用谷歌搜索了一下,但我找到的一切都谈到了控制器。没有关于一般的全局异常处理程序。@ControllerAdvice@ExceptionHandler

我基本上只是想确保如果发生一些我还没有捕获的异常,我会记录它,以便我知道它。


答案 1

我认为弹簧没有为此提供开箱即用的解决方案。

实现这一目标的一种可能性是使用带有注释的AOP(您可以在此处找到一个示例:在春季,我在哪里可以捕获非休息控制器异常?使用此方法,您可以为使用预定义注释的所有方法定义全局切点。这种方法的好处是将所有错误处理逻辑放在一个地方。


答案 2

通过AOP添加您自己的,如下所示将起作用:

@Aspect
@Component
public class ExceptionHandler {

    @AfterThrowing(pointcut = "within(*.*)", throwing = "t")
    public void log(Throwable t) {
        t.printStackTrace();
    }
}

查看备忘单以帮助进行切入点。


推荐