添加try catch块后接收超时

时间:2015-04-15 10:15:17

标签: c# sql sql-server timeout try-catch

我编写了一些代码来处理大约6个包含大量行的表。我花了大约4分钟完成工作,但它完成了正确。后来当我添加更多try catch块时,我开始收到超时。有太多尝试catch块会导致超时吗?如果没有可能出错的地方?

我首先通过OleDbDataAdapter读取* .mdb中的数据,然后读取/写入/更新到MS SQL。

1 个答案:

答案 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