自学内容网 自学内容网

SpringMVC 异常没有处理,发送 /error 请求(404 错误)

现象:

在过滤器中进行鉴权时候抛出了异常,此时客户端会收到 404 错误,接口确定是存在,为什么会收到 404 错误呢?

{
    "timestamp": "2024-04-16T03:12:19.832+00:00",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/api/logout"
}

原因:

@ControllerAdvice 注解只能处理经过 Controller 的异常。当我们自己定义的异常处理器不能处理的错误,Spring Boot 会默认提供了一个全局的异常处理器,来帮我们处理错误,并重新发起一个 /error 请求,交给 Spring Boot 的 BasicErrorController 去处理。

问题解决:

  • 自己捕获过滤器 filter 中的异常,自己处理。
  • 拦截请求路径是否有 /error,有就抛出异常。

总结:通常我们认为 404 就是请求路径不存在,遇到这种场景的时候感觉很诧异,不知道怎么处理,不会想到 Spring Boot 会帮我们重新发起一个 /error 请求,本文简单记录该问题,希望可以帮助到有需要的伙伴们。

如有错误的地方欢迎指出纠正。


原文地址:https://blog.csdn.net/weixin_42118323/article/details/137821719

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!