使用@ExceptionHandler对数据库异常进行统一处理

news2024/12/25 12:15:55
使用@ExceptionHandler对数据库异常进行统一处理
  • 数据库插入异常信息,插入字段长短超时数据库设置字段长度
### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'remark' at row 1
  • 捕获异常处理
    /**
     * 数据库字段长度超出限制异常
     */
    @ExceptionHandler(MysqlDataTruncation.class)
    @ResponseBody
    public KcloudResponse dataTruncationException(MysqlDataTruncation e) {
        log.warn("字段超长");
        // ResponseBuilder统一返回类的一个封装
        return ResponseBuilder.error("字段超长");
    }
  • 结果每次都捕获不到
  • 经调试发现,sql异常被spring同意处理了DataIntegrityViolationException
    在这里插入图片描述
  • 下面对异常捕获代码进行调整
    /**
     * spring统一捕获sql异常
     */
    @ExceptionHandler(DataIntegrityViolationException.class)
    @ResponseBody
    public KcloudResponse dataIntegrityViolationException(DataIntegrityViolationException e) {
        // 异常信息类
        Throwable cause = e.getCause();
        // 字段超长
        if (cause.getClass().equals(MysqlDataTruncation.class)) {
            log.warn("字段超长");
            return ResponseBuilder.error("字段超长");
            // 数据库插入记录异常,联合索引冲突
        } else if (cause.getClass().equals(SQLIntegrityConstraintViolationException.class)) {
            log.warn("唯一索引冲突");
            return ResponseBuilder.error("唯一索引冲突");
            // 数据库插入异常
        } else if (cause.getClass().equals(SQLSyntaxErrorException.class)) {
            log.warn("数据库插入异常");
            return ResponseBuilder.error("数据库插入异常");
        }

        log.warn("数据库操作异常");
        return ResponseBuilder.error("数据库操作异常");
    }
  • 调整之后就可以正常捕获sql的异常

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

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

相关文章

【T1】T1飞跃专业版软件中, 操作添加现金银行信息时提示:该父类账户信息有财务数据,不能分级。

【问题描述】 在T1飞跃专业版软件中, 操作添加现金银行信息时提示:该父类账户信息有财务数据,不能分级。 【解决方法】 该问题是原因是因为T1和U通用财务联用。 Ps:留一下软件版本【飞跃19.5财务15.0.2.5】 针对账套库执行下属语…

【含泪分享】OpenCV4工业缺陷检测的六种方法

机器视觉 机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工业品的缺陷检测极大的依赖人工完成,特别是传统的3C制造环节,产品缺陷检测依赖于…

PyQt6 QSlider滑块控件

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计45条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

【数据结构—栈的实现(数组栈)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、栈 1.1栈的概念及结构 二、栈的实现 2.1头文件的实现—Stack.h 2.2源文件的实现—Stack.c 2.3源文件的测试—test.c 三、栈的实际测试数据展示 3.1正常的出…

好用便签类工具有哪些?让上班族更轻松一些

想象一下你坐在电脑前,正在为即将到来的会议做准备,你需要整理一些重要的信息,以免在会议中遗漏关键内容。可是,你的电脑桌面上堆满了各种文件和图标,让你感到有些凌乱。这时,好用的便签类工具就成了你的救…

使用Allure框架创建个性化测试报告的步骤

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

FindMy技术用于手表

手表是一种用于计时和显示时间的仪器,通常由机械、电子或石英等机制驱动。手表可以作为配饰佩戴在手腕上,具有方便携带、时尚美观等特点。手表的种类和款式很多,可以根据不同的需求和场合进行选择。常见的手表类型包括机械表、石英表、电子表…

如何进行产品数据分析一——移动应用APP分析方法

如何进行产品数据分析 产品的定义产品分析的构成移动应用APP分析方法AARRR1.流量拆解DAUMAU活跃率拆解流量深度 2.流量引入反作弊算法识别系统(量)拉新质量评估体系(质)渠道价值评估体系(值) 3.流量输出 产…

同义词替换器降低论文重复率的最新技术进展

大家好,今天来聊聊同义词替换器降低论文重复率的最新技术进展,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:同义词替换器降低论文重复率的最新技术进展 一、引言 随着学术…

RK3568全国产化多网口板卡带poe供电,支持鸿蒙麒麟系统

信迈XM-3568-01主板采用瑞芯微RK3568四核Cortex-A55 处理器,主频最高可达2.0GHz,效能有大幅提升最高可配8GB内存容量,频率高达1600MHz;支持全链路ECC,让数据更安全可靠配置双千兆自适应RJ45以太网口,并扩展…

kernel32.dll如何解决,教你如何快速修复kernel32.dll文件缺失问题

kernel32.dll是Windows操作系统中非常重要的一个动态链接库文件,它提供了许多系统级的功能和服务。本文将介绍kernel32.dll动态链接库报错的五种解决方法,并探讨kernel32.dll丢失对电脑的影响以及其作用的介绍。 一、kernel32.dll动态链接库报错的五种解…

每日一练2023.12.13——6翻了【PTA】

题目链接:L1-058 6翻了 题目要求: “666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那…

docker容器-compose单机容器编排

yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高 类似于json格式,语法简单 yaml通过缩进来表示数据结构,连续的项目用-减号来表示 yaml文件使用的注意事项 1、大小写敏感 2、通过缩进表示层级…

Python 递归及目录遍历

递归调用:一个函数,调用了自身,称为递归调用 递归函数:一个会调用自身的函数 凡是循环能做的事,递归都能做。 目录 递归示例 普通方法实现 递归方式实现 计算分析: 递归遍历目录 引入os 遍历目录 执…

安防视频/可视化监控云平台EasyCVR对接大华卡口摄像头告警的操作步骤

旭帆科技的国标GB28181视频融合平台EasCVR不仅具备传统的视频监控功能,还配备了智能分析算法,近期有用户需要在现场的摄像头配备AI识别的功能,如烟火、人脸识别、车牌识别等功能。 最新版的EasyCVR(V.3.4)目前可对接大…

DBA轻松应对慢查询挑战,使用NineData这款工具就够了!

对于一个 DBA 来说,从公司数据库系统的稳定程度可以看出他的能力几何,一个优秀的 DBA 不仅要保证数据库的稳定运行,还需要有能力有效处理数据库的各种突发性能问题,而最常见的性能问题,就是慢查询。 我们公司规模比较…

Linux基础项目开发2:物联网监控——MJP-streamer方案实现(二)

前言: MJPG-Streamer代码简单,并且对CPU的要求比较低,一般的处理器都能运行,我们可以通过它,大体了解一下视频监控的知识。 一、MJP-streamer 编译安装MJP-streamer 使用Buildroot编译 在100ASK_IMX6ULL上安装、运行 使…

通讯系列电路芯片选型分析

适用于电话机上的电路芯片D34018 工作电压范围6V~11V 采用SOP28封装形式 D34118 工作电压范围3.5V~6.5V 采用SOP28封装形式 压缩扩展器电路芯片D31101 D5015 D5020 窄带中频放大器电路D3361 D3380 D31136 收发器电路芯片 D232 低功耗3-5.5V供电RS-2…

-bash: docker-compose: 未找到命令

-bash: docker-compose: 未找到命令 我在使用Docker搭建Nacos容器时遇到了这个问题:是没有安装 docker-compose工具 。 docker-compose的用处主要体现在以下几个方面: 快速搭建开发环境:使用docker-compose可以快速搭建起开发环境&#xff0…

全球十大骨传导耳机排名,骨传导耳机排行榜品牌推荐

随着科技的进步,人们对音乐和通话的需求越来越高,而骨传导耳机作为一种新兴的耳机类型,逐渐受到人们的关注。它通过人的头骨将声音直接传递到内耳,不经过耳道,因此不会阻碍外界声音的进入,同时也能更好地保…