SQLException捕获不到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/afsvsv/article/details/83382313

问题描述:做统一异常处理封装类处理,结果发现一直处理不了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 

猜你喜欢

转载自blog.csdn.net/afsvsv/article/details/83382313
今日推荐