关于springboot结合拦截器统一处理异常的问题

@GetMapping("/message/getMessage")
    @ApiOperation(value = "获取消息列表")
    public Result getMessage() {
        Subject subject = SecurityUtils.getSubject();
        if (subject.getPrincipal() == null) {
            return Result.fail().message("请登陆!").code(401);
        }
//省略若干代码
.........
}

因为使用的是jwt拦截器 每次都会验证请求头中的token是否正确 一旦错误 则抛出异常了

我试过用 @ControllerAdvice+@ExceptionHandler 这种只能用在我主动在controller方法中跑出异常 一旦脱离了controller 比如在拦截器中 抛出我自定义的异常 是不会捕获的 换言之 就是@ControllerAdvice没生效 貌似是不能处理这种情况的 有什么好的办法捕获这些异常 然后向前端返回json格式数据呢?

Filter报错,那都没进入到dispatcherServlet,你让它怎么处理 - -

你在拦截器HandlerInterceptor中进行统一拦截,抛出自定义异常,在@ControllerAdvice统一异常处理类中是可以被捕获处理的,你应该是哪里弄的有问题的,因为拦截器的异常的异常正常往外抛的时候,是会被DispatcherServlet.doDispatch()方法中的try/catch捕获进入异常处理的

img