当前位置: 首页 > article >正文

interceptor 和异常全局处理 Advice Advice中没有捕获异常

问题场景:

我有两个项目,都有全局拦截器 interceptor 和异常全局处理 Advice。且在Advice中处理的错误返回http status code 为200,只是接口msg字段输出异常message。

发现:

        其中一个项目访问一个不存在的链接 http status 为 500 (下面称为A500项目),另一个访问一个不存在的链接 http status 为 200项目为 (下面称为B200项目)。

        其中调试得知:

                        A500项目无论是否存在这个RequestMapping都会走过滤器 interceptor;过滤器某些验证没有通过抛出了自定义异常,而 Advice 无法捕获异常直接跳转到了 /error 页面走的Springboot默认错误处理逻辑。

                        A200项目访问RequestMapping不存在的链接会直接抛出异常class org.springframework.web.servlet.NoHandlerFoundException没有找到对应接口或者mapping。

期望结果:

        我期望A500也是不走过滤器或者走也可以,但是 http status 不要为 500,因为我们项目没有走 http code 而是接口的返回 no 字段来判断。

解决:

        经过比对两个项目不同,发现 A200 项目的 application.yml 文件中 static-path-pattern 如下:

spring:
  mvc:
    static-path-pattern: /static/**            # 自定义映射目录

        而 A500 中却没有 static-path-pattern 加上之后达到效果。

猜测:在Spring Boot中,默认情况下,静态资源请求是不会经过拦截器(Interceptor)链的,他会不会当做了静态资源去访问了呢?这还是要注意千万不要和静态资源冲突或者同名。


http://www.kler.cn/a/457656.html

相关文章:

  • 移动端如何实现上拉加载
  • 网络安全 | 物联网安全:从设备到网络的全方位防护
  • 【机器学习 | 数据挖掘】时间序列算法
  • springboot534售楼管理系统(论文+源码)_kaic
  • 计算机毕业设计Python+Spark考研预测系统 考研推荐系统 考研数据分析 考研大数据 大数据毕业设计 大数据毕设
  • 30天开发操作系统 第 10 天 -- 叠加处理
  • 【Linux】:Linux网络编程基础
  • 【学生管理系统】权限管理之角色管理
  • js的讲解
  • JSON结构快捷转XML结构API集成指南
  • 分布式版本管理工具——Git关联远程仓库(github+gitee)
  • Junit如何禁用指定测试类,及使用场景
  • 基于Springboot + vue实现的火锅店管理系统
  • 从基础到实践:一站式RPC技术深入解析
  • Linux下PostgreSQL-12.0安装部署详细步骤
  • 概率统计与随机过程--作业9
  • 【AIGC-ChatGPT职业提示词指令】职业发展的航海指南:在人生的十字路口做出明智抉择
  • 地理坐标系和投影坐标系
  • Rtsplive-视频流-Linux部署
  • Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成Log4j1.x 及 原理分析
  • 【从零开始入门unity游戏开发之——C#篇34】C#匿名函数(delegate )和Lambda表达式
  • 【探花交友】通用设置总结笔记
  • Spring Boot Actuator、Spring Boot Actuator使用、Spring Boot Actuator 监控、Spring程序监控
  • libreoffice在Windows和Linux环境的安装和结合Springboot使用教程
  • Windows安装Confluence详解
  • YOLOv10-1.1部分代码阅读笔记-conv.py