处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?
Posted
技术标签:
【中文标题】处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?【英文标题】:What exceptions to catch when dealing with SqlConnection, SqlDataReader, SqlCommand? 【发布时间】:2012-01-12 04:14:57 【问题描述】:我正在使用SqlConnection
、SqlDataReader
、SqlCommand
和SqlParameters
与我的数据库进行通信。我正在寻找有关捕获最相关的Exceptions
的建议,而不是抛出一个新的Exception()
,这是一个太宽泛的类。
感谢所有帮助!
【问题讨论】:
【参考方案1】:最相关可能等同于可能发生的最常见的环境条件。编码错误将得到修复,但您无法控制环境问题。
此外,除了课程上的文档之外,您还可以简单地尝试这些条件并确保您正确处理了这些条件。多年前,一位开发人员问我,如果连接丢失,某些各种技术会引发什么异常 - 所以我拔掉了他的网线,我们运行了他的代码:)
一些常见的可能是:
-
拔下网线
禁用您的网络适配器
停止 SQL Server
创建一个需要很长时间的存储过程
让数据库/tempdb 填满
确保您没有 sql server 的权限
创建一个死锁的存储过程
在某些情况下(网络、超时、死锁牺牲品),您可能希望通过增加等待来重试。对于像 db full 这样的其他人,您最好的希望是为管理员提供良好的指导甚至记录详细信息。
通过尝试条件,您可以确定引发了什么异常,并且您可以验证您是否正确处理了条件。
【讨论】:
@bryanmac - 感谢您的回答。问的时候脑子里只有编码错误,没有考虑环境条件,谢谢!以上是关于处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?的主要内容,如果未能解决你的问题,请参考以下文章
处理SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?
求大侠帮忙,好多次调试都在SqlConnection conn = new SqlConnection(connStr);出现用户代码未处理
using(SqlConnection connection=new SqlConnection(connectionString))