假设我有这样的代码:
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}})
那么,即使抛出异常,是否可以继续迭代?
答案 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;
}
}