SpringBoot全局异常@ExceptionHandler无法精确匹配问题分析

news2024/11/19 12:40:34

这个是我的全局异常处理类,以new ThirdException(JSON.toJSONString(obj))形式抛出了这个自定义异常,不管从最底层的方法抛出上层不抛,还是从controller的入口开始都抛出,均无法精确匹配。下面分别是自定义异常和全局异常处理类,分析过程在末尾。


spring-boot-starter-parent版本:2.3.12.RELEASE

第一次调用 exceptionLookupCache 为空,会通过getMappedMethod方法获取后再进行put,exceptionLookupCache 是一个Map<Class<? extends Throwable>, Method>

类型的
ConcurrentReferenceHashMap 结构。

第2步,核心代码逻辑:从mappedMethods 中解析自定义异常和自定义异常的处理方法映射集合。mappedMethods 是类型为Map<Class<? extends Throwable>, Method>的HashMap结构在服务启动的时候通过init***方法加进去。有异常抛出时通过
mappedException.isAssignableFrom这个native方法判断mappedMethods的keys,keys就是在全局异常中定义的所有异常类,包括自定义异常。

第3步:***
.common.basic.exception.ThirdException 在通过 isAssignableFrom 判断时返回了false,所以没有加到 matches 里面,也就没有机会参加排序,就导致没有匹配到准确的处理方法。

启动的时候mappedMethods 里面可以正常加进去,但是isAssignableFrom 判断时返回了false,随后调用的时候mappedMethods 就为空了,这很正常,因为它就是个reference的ConcurrentHashMap。但导致exceptionLookupCache 会加进去一个ThirdException->null 的kv,结果就是找不到ThirdException对应的处理方法,进而直接走了@ExceptionHandler(value = Exception.class)

感觉就像是代码问题,有什么解决方案吗?解决了有红包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生底座之上,企业如何借力领跑数字化转型?

导语 | 随着数字化转型的加速&#xff0c;越来越多企业选择“乘云而上”&#xff0c;把云战略提升到了全新的高度&#xff0c;并逐步朝着多云架构加速演进。云原生架构的持续迭代&#xff0c;使得云原生技术的应用层出不穷&#xff0c;无论是互联网公司&#xff0c;还是银行、政…

阿里高工熬夜18天码出Java150K字面试宝典,却遭Github全面封杀

大家都知道&#xff0c;现在的Java面试是越来越难了&#xff01;主要原因无非是两个&#xff1a; 随着Java这个行业的兴起&#xff0c;不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java&#xff01;大量人…

(附源码)SSM驾校考试车预约管理系统 毕业设计

SSM驾校考试车预约管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中…

数据库主从复制,读写分离,分库分表理解 (数据库架构演变)

主从复制 主从复制, 主要是针对MySQL数据库的高可用性, 容灾性上面. 是叫做高可用性? 高可用性可以简单的理解为容灾性, 稳定性, 针对故障&#xff0c;风险情况下的处理, 备案, 策略. 指系统无中断地执行其功能的能力&#xff0c;代表系统的可用性程度 高可用性通常…

FFmpeg手撕视频(Android端)

前言 FFmpeg是非常强大的音视频处理工具&#xff0c;我们可以使用它来处理视频合成、剪辑、加特效等等操作。 官方文档至上 FFmpeg的官方文档 FFmpeg的官方文档命令真的是太多太多&#xff0c;而且都是英文&#xff0c;感觉精通完这些命令&#xff0c;都够学一门新语言了&#…

SpringSecurity实现登录和自定义权限认证

介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean&#xff0c;充分利用了Spring IoC&#xff0c;DI和AOP&#xff08;面向切面编程&#xff09;功能&#xff0c;为应用系…

怎么看l2接口十档行情?

怎么看l2接口十档行情&#xff1f;打开任意个股&#xff0c;在盘口即可查看买一至买十&#xff0c;卖一至卖十。Level行情1只能看五档报价&#xff0c;但是五档报价看起来很平静&#xff0c;但是主力很可能会在五档报价之外悄悄布局。使用Level2接口&#xff0c;你可以看到10档…

python制作刮刮乐惊喜揭秘呀~【趣味代码】

前言 大家早好、午好、晚好吖 ❤ ~ 在今天&#xff0c;在我百般无聊的时候&#xff0c;突然发现一存货 于是&#xff0c;我把从犄角旮旯里翻出来的代码一运行 嘿&#xff0c;真不错~那在这里就分享给大家 素材 首先我们准备一些图片以及一首下载好的音乐&#xff08;游戏音…

C++ 数学与算法系列之认识格雷码

1. 前言 程序中所涉及到的任何数据&#xff0c;计算机底层均需转换成二进制数值后方可存储&#xff0c;这个过程也称为编码。反之&#xff0c;把底层二进制数据转换成应用数据称为解码&#xff0c; 不同的数据类型需要不同的编&#xff08;解&#xff09;码方案&#xff0c;如…

论文投稿指南——中国(中文EI)期刊推荐(第2期)

&#x1f680; EI是国际知名三大检索系统之一&#xff0c;在学术界的知名度和认可度仅次于SCI&#xff01;&#x1f384;&#x1f388; 【前言】 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。其中&#xf…

基于jsp+ssm闲置图书分享平台系统-计算机毕业设计

项目介绍 本闲置图书管理系统主要包括系统图书交换模块、图书分享管理模块、图书借阅管理模块、新闻公告管理模块、图书类别管理、图书信息管理、登录模块、和退出模块等多个模块,采用目前最流行的B/S结构和java中流行的MVC三层设计模式和eclipse编辑器、MySQL 数据库设计并实…

代码提速100倍,怎么实现的?

众所周知&#xff0c;Python的简单和易读性是靠牺牲性能为代价的 尤其是在计算密集的情况下&#xff0c;比如多重for循环。不过现在&#xff0c;大佬胡渊鸣说了&#xff1a; 只需import 一个叫做“Taichi”的库&#xff0c;就可以把代码速度提升100倍&#xff01; 不信&…

VTK - vtkPolyData数据的Remesh

欢迎加入我的VTK社区 雪易VTK社区-CSDN社区云 前言&#xff1a;在研究3-matic软件中smooth Edge和Local Smoothing功能时&#xff0c;先对数据的网格进行了重新的划分&#xff0c;即3-matic软件中的Remesh功能。本博文主要针对Remesh进行展开。 目录 网格质量 vtkMeshQuali…

【JavaScript】ESLint 深入浅出

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 初体验安装lint配置.eslintrc.js忽略文件package.json中添加eslint脚本2️⃣ vscode中使用插件安装作用3️⃣ 规避报错问题行添加注释问题文件开头添加注释修改配置文件.eslintrc.js4️⃣ 常见错误汇总Cannot read property nam…

站在巨人的肩膀上,用Node+ChatGPT模块实现一个接口

目录 前言 准备工作 起步 写在最后 前言 蹭一下最近比较火的人工智能ChatGPT的热度&#xff0c;最近看到许多小伙伴都在调戏ChatGPT&#xff0c;看到这我就坐不住了&#xff0c;这种事怎么能少了我&#xff0c;于是闲&#xff08;划&#xff09;暇&#xff08;水&#xff0…

什么事Jupyter Notebook?

Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 简而言之&#xff0c;Jupyter Notebook是以网页的形式打开&#xff0c;可以在网页页面中直接编写代码和运行代码&#xff0c;代码的运行结果也…

【javascript】 初见浏览器端日志系统 log4js、bunyan

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ log4js配置实现2️⃣ bunyan自定义MyRawStream实现&#x1f6ec; 文章小结&#x1f4d6; 参考资料&#x1f6eb; 导读 需求 用习惯了python、java的日志系统&#xff0c;现在使用console.log等览器端js接口打印日志&#xff0c…

m基于FPGA的多级抽取滤波器组verilog设计,包括CIC滤波,HB半带滤波以及DA分布式FIR滤波

目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 数字下变频中的低通滤波器是由多级抽取滤波器组实现的。信号的同相分量和正交分量再分别经由积分梳状滤波器(CIC)、半带滤波器(HB)和有限长单位脉冲响应(FIR)滤波器构成的多级抽取滤波器组进行滤波…

vcenter开机报错activating swap-devices in /etc/fstab

问题&#xff1a;昨天IDC机房一台存储断电了&#xff0c;恰巧vcenter在这台存储上&#xff0c;重启存储后再重启vcenter报了以下错误&#xff1a; 参考文档&#xff1a; https://www.virtualizestuff.com/2015/10/29/vcsa_fstab_failed/ https://kb.vmware.com/s/article/2069…

政企数智办公潮水里的融云「答卷」

在这张集合了党政机关、金融保险、交通、能源电力等中大型组织复杂办公需求的高难度答卷上&#xff0c;融云在扎实耐打的通信底层之上&#xff0c;保持灵活的身段和强大的进化能力&#xff0c;稳定而轻盈&#xff0c;在不断变化的环境中正在成为确定性本身。 作者|皮爷 出品…