处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?

Posted

技术标签:

【中文标题】处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?【英文标题】:What exceptions to catch when dealing with SqlConnection, SqlDataReader, SqlCommand? 【发布时间】:2012-01-12 04:14:57 【问题描述】:

我正在使用SqlConnectionSqlDataReaderSqlCommandSqlParameters 与我的数据库进行通信。我正在寻找有关捕获最相关的Exceptions 的建议,而不是抛出一个新的Exception(),这是一个太宽泛的类。

感谢所有帮助!

【问题讨论】:

【参考方案1】:

最相关可能等同于可能发生的最常见的环境条件。编码错误将得到修复,但您无法控制环境问题。

此外,除了课程上的文档之外,您还可以简单地尝试这些条件并确保您正确处理了这些条件。多年前,一位开发人员问我,如果连接丢失,某些各种技术会引发什么异常 - 所以我拔掉了他的网线,我们运行了他的代码:)

一些常见的可能是:

    拔下网线 禁用您的网络适配器 停止 SQL Server 创建一个需要很长时间的存储过程 让数据库/tempdb 填满 确保您没有 sql server 的权限 创建一个死锁的存储过程

在某些情况下(网络、超时、死锁牺牲品),您可能希望通过增加等待来重试。对于像 db full 这样的其他人,您最好的希望是为管理员提供良好的指导甚至记录详细信息。

通过尝试条件,您可以确定引发了什么异常,并且您可以验证您是否正确处理了条件。

【讨论】:

@bryanmac - 感谢您的回答。问的时候脑子里只有编码错误,没有考虑环境条件,谢谢!

以上是关于处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?的主要内容,如果未能解决你的问题,请参考以下文章

处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?

求大侠帮忙,好多次调试都在SqlConnection conn = new SqlConnection(connStr);出现用户代码未处理

SQLConnection 实例通过 Dapper 处理

using(SqlConnection connection=new SqlConnection(connectionString))

TSQLConnection的事务处理

C# SQLConnection 池