抛出异常后继续循环迭代

时间:2013-05-29 15:50:07

标签: c# .net exception exception-handling

假设我有这样的代码:

try
{
    for (int i = 0; i < 10; i++)
    {
        if (i == 2 || i == 4)
        {
            throw new Exception("Test " + i);
        }
    }
}
catch (Exception ex)
{
    errorLog.AppendLine(ex.Message);
}

现在,很明显执行将在i==2停止,但我想让它完成整个迭代,以便在errorLog中有两个条目(对于i==2和{ {1}}) 那么,即使抛出异常,是否可以继续迭代?

2 个答案:

答案 0 :(得分:43)

只需将catch的范围更改为循环内部,而不是在其外部:

for (int i = 0; i < 10; i++)
{
    try
    {
        if (i == 2 || i == 4)
        {
            throw new Exception("Test " + i);
        }
    }
    catch (Exception ex)
    {
        errorLog.AppendLine(ex.Message);
    }
}

答案 1 :(得分:6)

为什么要抛弃异常? 您可以立即写入日志:

for (int i = 0; i < 10; i++)
{
    if (i == 2 || i == 4)
    {
        errorLog.AppendLine(ex.Message);
        continue;
    }
}