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 

 

SQL Server 的 `SqlException` 是在 C# 开发中处理与 SQL Server 数据库相关的异常的一种异常类。它是 `System.Data.SqlClient` 命名空间下的一个类。 当使用 C# 与 SQL Server 进行数据库交互时,可能会遇到各种错误情况,例如连接失败、查询错误等。`SqlException` 类可以捕获并处理这些异常。 以下是一个使用 `SqlException` 的简单示例: ```csharp using System; using System.Data.SqlClient; class Program { static void Main() { try { // 连接到 SQL Server 数据库 string connectionString = "Data Source=(local);Initial Catalog=YourDatabase;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // 执行 SQL 查询 SqlCommand command = new SqlCommand("SELECT * FROM YourTable", connection); SqlDataReader reader = command.ExecuteReader(); // 处理查询结果 while (reader.Read()) { Console.WriteLine(reader["ColumnName"]); } // 关闭连接和读取器 reader.Close(); } } catch (SqlException ex) { // 处理 SQL 异常 Console.WriteLine("SQL Exception occurred: " + ex.Message); } catch (Exception ex) { // 处理其他异常 Console.WriteLine("An error occurred: " + ex.Message); } } } ``` 在以上示例中,我们使用了 `SqlException` 来捕获可能发生的与 SQL Server 相关的异常。通过访问 `ex.Message` 可以获取异常的详细信息,进而进行相应的处理。 请注意,上述示例仅为了说明 `SqlException` 的使用方式,并不包含完整的错误处理和最佳实践。在实际开发中,应根据具体情况进行适当的异常处理和资源清理。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值