我的一个c#应用程序,我编写了如下的sql连接代码
try
{
myConnection = new SqlConnection(m_resourceDB.GetResourceString(nSiteID, ApplicationID.XClaim,(short)nResID ) );
myConnection.open();
}
我想处理 sqlserver 的未知问题,例如数据库关闭、超时。
为此,我虽然引入了 3 次 for 循环,循环之间有 3 分钟的 sleep ,如果存在所有问题,那么我将退出循环
不知道我的想法对不对?我需要一些专家的建议吗?有什么例子吗?
最佳答案
我想简单地说:与连接等通信的代码不应该进行休眠/重试,除非该代码已经是异步的。如果顶级调用 代码想要捕获异常并设置一个计时器(而不是 sleep )并重试,那么很好 - 但您想要避免的是:
var data = dal.GetInfo();
突然用了3分钟。如果它是一个异步/回调,您可能会逃避它,并且您已经明确宣传该方法可能需要几分钟才能执行。但即便如此,也感觉有些牵强。如果您负责应用程序逻辑,为什么不在第一时间捕获异常,告诉用户,并让用户在将来的某个时间点再次点击按钮?
关于c# - 如何处理数据库异常/问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307516/