抛出exception后继续循环迭代
假设我有一个这样的代码:
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
和i==4
)所以,是否可能继续迭代甚至抛出exception?
只需将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); } }
为什么要抛出exception呢? 您可以立即写入日志:
for (int i = 0; i < 10; i++) { if (i == 2 || i == 4) { errorLog.AppendLine(ex.Message); continue; } }
- 为什么Finalize / Destructor示例在.NET Core中不起作用?
- 如果Entity Framework / DbContext是DAL / Repository,它在哪里适合3层架构?
- 将C#代码转换为IL代码
- 使用动态列填充Datagrid
- 使用有效的Double向DateTime添加秒可导致ArgumentOutOfRangeException
- 如何为二进制格式化程序创建SerializationBinder,以处理类型从一个程序集和名称空间到另一个程序集和名称空间的移动
- 从HttpWebResponse中检索多个“Set-Cookie”标头
- 从C#直接将原始SOAP XML发送到WCF服务
- 如何循环遍历C#中的所有枚举值?