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

时间:2011-12-03 13:52:38

标签: c# .net sql exception exception-handling

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

感谢所有帮助!

1 个答案:

答案 0 :(得分:8)

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

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

一些常见的是:

  1. 拔下网络电缆
  2. 禁用网络适配器
  3. 停止SQL Server
  4. 创建需要很长时间的sproc
  5. 让数据库/ tempdb变满
  6. 确保您没有sql server的权限
  7. 创建一个死锁的
  8. 在某些情况下(网络,超时,死锁受害者),您可能希望在增加等待时重试。对于像db这样的其他人来说,你可以期望的最好的就是为管理员提供良好的指导甚至记录详细信息。

    通过尝试条件,您可以确保抛出什么异常,并且您可以验证您是否正确处理了该条件。