java在底层捕获异常_Java正确捕获异常的真实类
异常捕获真实情况案例分析: 首先场景是这样的,有一个表比如是用户表,用户表的用户名字段加上了唯一索引,防止在并发情况下出现多个用户名为同样的,在业务层执行插入时候我们进行异常捕获,捕获底层抛出唯一索引的错误 代码:
try {
int insert = baseMapper.insert(userBean);
if (insert == 0) {
return "插入失败";
}
}catch (Exception ee) {
ee.printStackTrace();
}
异常打印信息:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1213' for key 'username'
这里我们看到MySQLIntegrityConstraintViolationException这个异常类,我们把这个类进行catch试下,结果提示 说不会在try块中进行抛出,也就捕获不了,下面是解决方案: 由于spring框架有帮我们做底层异常的处理封装,这时候我们不知道到底哪个类用来catch,这是非常蛋疼的问题!!!! 去看spring文档,了解下spring的异常处理类到底有哪些?不不不不!不能这样!!!
这时候我们用反射来解决: 用到了getClass和getName getClass:获取运行类 getName:获取当前类的路径
try {
int insert = baseMapper.insert(userBean);
if (insert == 0) {
return "插入失败";
}
} catch (Exception ee) {
String name = ee.getClass().getName();
System.out.println(name);
}
我们再一次测试,控制台打印:
org.springframework.dao.DuplicateKeyException
嗯,这就是spring在底层抛出的真实类,我们用这个类进行catch
try {
int insert = baseMapper.insert(userBean);
if (insert == 0) {
return "插入失败";
}
}catch (DuplicateKeyException ee) {
return "插入失败。。。已经有了这个用户";
}
这个方法就能轻松的帮我们找出抛出异常到底是哪个“家伙”了,进行相应的处理!
java在底层捕获异常_Java正确捕获异常的真实类相关推荐
- java语言sql接口_java.sql包中的类和接口及其使用
java.sql包提供使用Java编程语言访问并处理存储在数据源中数据的API,可以动态地安装不同驱动程序来访问不同数据源. 下面,详解java.sql包中包含的常用的接口和类 1.DriverMan ...
- java nio底层实现_Java NIO 底层原理
一.概念说明 1.内核态(内核空间)和用户态(用户空间)的区别和联系? 用户空间是用户进程所在的内存区域,系统空间是操作系统所在的内存区域.为了保证内核的安全,处于用户态的程序只能访问用户空间,而处于 ...
- java阅读doc文件格式_java – 正确区分.xls和.doc文件的方法?
.doc / .xls文档都可以以OLE2存储格式存储. org.apache.poi.poifs.filesystem.FileMagic可以帮助您仅检测文件存储格式,而不仅仅是为了区分.doc / ...
- java list底层实现_java中linkedlist的底层实现
详情请看上面的文章,以下是我的简单总结: 1.linkedlist可序列化.可克隆.可做队列和双端队列使用 2.linkedlist的底层实现是双向循环链表 3.linkedlist有两个私有属性,一 ...
- java对象生命周期_Java对象生命周期和类生命周期
原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...
- java unsafe 详解_Java CAS操作与Unsafe类详解
一.复习 计算机内存模型,synchronized和volatile关键字简介 二.两者对比 sychronized和volatile都解决了内存可见性问题 不同点: (1)前者是独占锁,并且存在者上 ...
- java 日期处理 口诀_java时间处理常用方法工具类
java时间处理常用方法工具类 . import java.io.PrintStream; 2 import java.sql.Time; 3 import java.sql.Timestamp; 4 ...
- Java常用API例子_Java常用API及Math类
一.API的概述 API--Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...
- java操作文件爱女_Java的IO操作---File类
目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...
最新文章
- GCC 同时编译多个 C/C++ 文件
- 怎么这一个c语言的dll文件,如何在C中获取DLL文件的版本信息
- 5、Dcoker 容器数据卷用-v命令添加
- 类加载器源码、双亲委派、自定义类加载器详解
- R7-4 检查密码 (15 分)
- 【C语言】编译预处理和宏(附带##介绍)
- Python使用标准库itertools中count类求解数苹果问题
- OpenGL基础54:点光源阴影
- ae运动模糊插件安装教程_AEPR运动模糊插件(RSMB) REVisionFX ReelSmart Motion Blur Pro v4.2.3...
- chrome误删书签恢复
- 【MySQL 09】安装mysql时出现:需要这两个包perl(Data::Dumper),perl(JSON)
- 在线生成网站地图工具SiteMap
- 2020年中国环博会|2020环博会|第21届中国环博会参展商名单(第2批)“加速”出炉!
- 网络攻防技术(郑大信安个人总结版)
- 如何两个电脑共享文件实现多人编辑_怎么才能几台电脑同时编辑共享的同一word文档...
- 记一次.Net Core通过GDI+在CentOS 7(Docker)环境中绘图报错The type initializer for ‘Gdip‘ threw an exception的问题及处理方式
- 原生js实现播放器操作(随机播放、上/下一首、播放/暂停)
- 10 个国外顶尖的 lowcode 开发平台
- js实现飞机大战小游戏
- 在文件夹中快速打开命令行
热门文章
- latex 插入表格_【2020.11.30】IEEE trans英文latex写作心得和学习历程
- ueditor 上传路径 Php_v9切换ueditor后图片上传路径问题 改成绝对路径
- mysql数据库产生的背景_MySql路途之mysql背景
- FFT分析的加窗和重叠
- 最近对焦距离与最大放大倍率
- 又见The request sent by the client was syntactically incorrect ()
- 【BZOJ 1951】 [Sdoi2010]古代猪文
- ASMSupport教程4.7 生成关系运算符
- 两个类相互包含对方成员的问题(2)
- 【转载】oracle normal、sys、system、sysdba、sysoperdba的区别