19

假设我有这样的代码:

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有两个条目(fori==2i==4)中,即使抛出异常也可以继续迭代吗?

4

2 回答 2

60

只需将范围更改为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);
    }
}
于 2013-05-29T15:51:11.950 回答
7

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

for (int i = 0; i < 10; i++)
{
    if (i == 2 || i == 4)
    {
        errorLog.AppendLine(ex.Message);
        continue;
    }
}
于 2013-05-29T15:53:33.090 回答