我正在使用 SqlConnection
、SqlDataReader
、SqlCommand
和 SqlParameters
与我的数据库进行通信。我正在寻找有关捕获最相关的 Exceptions
而不是抛出新的 Exception()
的建议,这是一个太宽泛的类别。
感谢所有帮助!
最佳答案
最相关可能等同于可能发生的最常见的环境条件。编码错误将得到修复,但您无法控制环境问题。
此外,除了类文档之外,您还可以简单地尝试这些条件并确保您正确地处理了这些条件。多年前,一位开发人员问我,如果连接丢失,某些技术会抛出什么异常 - 所以我拔掉他的网线,然后我们运行他的代码:)
一些常见的是:
- 拔掉你的网线
- 禁用您的网络适配器
- 停止 SQL Server
- 创建一个需要很长时间的存储过程
- 让数据库/tempdb 变满
- 确保您没有访问 sql server 的权限
- 创建一个会死锁的存储过程
在其中一些情况下(网络、超时、死锁受害者),您可能希望通过增加等待时间来重试。对于像 db full 这样的其他人,您最好的期望是为管理员提供良好的指导甚至日志详细信息。
通过尝试条件,您可以确定抛出的异常是什么,并且可以验证您是否正确处理了条件。
关于c# - 在处理 SqlConnection、SqlDataReader、SqlCommand 时要捕获哪些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8368096/