我编写了一些代码来处理大约6个包含大量行的表。我花了大约4分钟完成工作,但它完成了正确。后来当我添加更多try catch块时,我开始收到超时。有太多尝试catch块会导致超时吗?如果没有可能出错的地方?
我首先通过OleDbDataAdapter读取* .mdb中的数据,然后读取/写入/更新到MS SQL。
答案 0 :(得分:0)
取决于抛出异常的频率。实际上,try-catch bloc会在抛出异常时显着减慢代码。在我的intel i5-4440上,每个catch块在调试时最多需要30毫秒。因此,一些循环有1000次迭代,抛出和捕获异常,将需要30秒才能完成。
简单的证明代码示例
[Test]
public void Test()
{
var timer = new Stopwatch();
timer.Start();
for (int i = 0; i < 1000; i++)
{
try
{
throw new Exception();
}
catch (Exception)
{
// do nothing
}
}
timer.Stop();
Console.WriteLine(timer.ElapsedTicks);
timer.Reset();
timer.Start();
for (int i = 0; i < 1000; i++)
{
try
{
// do nothing
}
catch (Exception)
{
// do nothing
}
}
timer.Stop();
Console.WriteLine(timer.ElapsedTicks);
}
我的CPU输出(不在调试中):
19119
13