相关文章推荐
率性的玉米  ·  Brief ...·  11 月前    · 
//save } catch ( Exception e ) { if ( e instanceof SQLIntegrityConstraintViolationException ) { //返回成功

如图,用的是spring的事务管理(@),当发生违反唯一约束异常时,catch到异常,判断是否java.sql.SQLIntegrityConstraintViolationException(违反唯一约束异常),发现并没有进入if判断

2.问题原因

在这里插入图片描述 debug看到e=org.springframework.dao.DuplicateKeyException,这是spring定义的一个异常,继承了了org.springframework.core.NestedRuntimeException,有一个入参是String,Throwable的构造方法。图中红圈sqlEx变量即为SQLIntegrityConstraintViolationException异常。由此可见,springjdbc捕获到违反唯一约束异常时做了分装,抛出了一个DuplicateKeyException,其中的cause属性是SQLIntegrityConstraintViolationException,所以该怎么写就明了了。

3.解决方案

第一种写法:从异常获取cause去判断

try {
		//save
		}catch (Exception e) {
				if(e.getCause() instanceof SQLIntegrityConstraintViolationException) {
					//返回成功

第二种写法:直接用捕获到的异常判断,不过没深究spring-jdbc是否只在违反唯一约束时抛出DuplicateKeyException

try {
		//save
		}catch (Exception e) {
				if(e instanceof DuplicateKeyException) {
					//返回成功

推荐第一种写法

1.问题描述try { //save }catch (Exception e) { if(e instanceof SQLIntegrityConstraintViolationException) { //返回成功 } }catch到异常,判断是否java.sql.SQLIntegrityConstraintViolationException(违反唯一约束异常),发现并没有进入if判断2.问题原因 debug看到e=org.springf catch(DuplicateKeyException e){ if(e.getLocalizedMessage().toString().contains("LOGIN_NAME_UNI")){ throw new CoshipException(ResultEnum.USER_NAME_EXISTED); }else if(e.getLocalizedM...
主题:org.springframework.dao.DuplicateKeyException 和com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException 违反唯一约束索引报错信息:org.springframework.dao.DuplicateKeyException: ### Error
那么,具体应该怎么实现呢? 可以使用我们之前讲解过的 过滤器、拦截器来实现,在过滤器、拦截器中拦截前端发起的请求,判断用户是否已经完成登录,如果没有登录则返回提示信息,跳转到登录页面。 1.2 思路分析
开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3.6.RELEASE开发工具 spring-jdbc-4.3
要在Java捕获SQLIntegrityConstraintViolationException,可以在代码中使用try-catch块。例如: try { // 运行SQL语句 } catch (SQLIntegrityConstraintViolationException e) { // 处理异常 注意,在处理异常时,可能需要执行一些清理操作,如回滚事务。此外,也可以选...
SQLIntegrityConstraintViolationException: Duplicate entry ‘xxx’ for key 'yyyzzz’异常解决 一. 异常现象 在做Java Web项目操作数据库添加数据的时候,突然发现曝出如下图所示异常: Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'test1' for key 'UK_sb8bbouer5wak8vyiiy4pf2b