c# - 在处理 SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?

标签 c# .net sql exception exception-handling

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

感谢所有帮助!

最佳答案

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

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

一些常见的是:

  1. 拔掉你的网线
  2. 禁用您的网络适配器
  3. 停止 SQL Server
  4. 创建一个需要很长时间的存储过程
  5. 让数据库/tempdb 变满
  6. 确保您没有访问 sql server 的权限
  7. 创建一个会死锁的存储过程

在其中一些情况下(网络、超时、死锁受害者),您可能希望通过增加等待时间来重试。对于像 db full 这样的其他人,您最好的期望是为管理员提供良好的指导甚至日志详细信息。

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

关于c# - 在处理 SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8368096/

相关文章:

c# - 表达式方法,大于如何实现

c# - 计算上传传输速度问题

c# - System.Random 默认构造函数系统时钟分辨率?

MYSQL:根据另外两个表的连接计算一个表中的行数

mysql - 在 SqlAlchemy 中,我应该使用经典映射还是其他方式?

mysql - 如何用一条select语句取出多个ID?

c# - 使用linq在查找表中查找记录

c# - PInvoke 签名与非托管目标签名不匹配

c# - 关于 TabControl 中事件特殊性的问题

c# - 如何验证 LDAP+SSL 连接的服务器 SSL 证书