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

当在过滤器中抛出鉴权异常时,SpringBoot会自动重定向到/error,导致404。文章解释了原因并建议捕获filter异常自行处理,以避免这种意外行为。
摘要由CSDN通过智能技术生成

现象:

在过滤器中进行鉴权时候抛出了异常,此时客户端会收到 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 请求,本文简单记录该问题,希望可以帮助到有需要的伙伴们。

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值