SQLException捕获不到的问题

1 篇文章 0 订阅

问题描述:做统一异常处理封装类处理,结果发现一直处理不了SQLException及其子类异常

@ResponseBody
@ExceptionHandler(value=SQLException.class)
public ResponseModel sqlErrorHandler(SQLException e){
	System.out.println("sql error handler");
	return new ResponseModel(Code.SQL_ERROR.getCode(), Code.SQL_ERROR.getMessage());
}	

很是奇怪,因为之前的确做过catch SQLException异常处理,没理由处理不了啊

继续排查,发现cause的虽然是SQLException 但是最初的异常却是org.springframework.daoDataAccessException的子类,说明是属于spring dao 层处理的异常类,而Spring的dao为了统一处理,屏蔽了与特定技术相关的异常,例如SQLException或HibernateException,抛出的异常是与特定技术无关的org.springframework.dao.DataAccessException类的子类。

回想了一下,之前的项目里面貌似没用注解,因此是自己去捕获处理的SQLException,而现在的代码里面使用的是spring的注解,导致现在无法直接捕获处理SQLException,现在去处理DataAccessException

@ResponseBody
@ExceptionHandler(value=DataAccessException.class)
public ResponseModel dataAccessErrorHandler(DataAccessException e){
	System.out.println("data access error handler");
	return new ResponseModel(Code.SQL_ERROR.getCode(), Code.SQL_ERROR.getMessage());
}

参考博客如下:https://blog.csdn.net/HardyCheers/article/details/80920095 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值