Jas*_*son 7 c# foreach exception
如果我有以下代码:
List<MyClass> list = GetList();
list.ForEach(i => i.SomeMethod());
Run Code Online (Sandbox Code Playgroud)
让我们说SomeMethod()
抛出一个例外.是ForEach
继续迭代,还是只是停在那里?
如果它确实终止,有没有办法让集合中的其余项目运行他们的方法?
Jon*_*eet 13
是的,如果抛出异常,则循环退出.如果您不想要这种行为,则应将异常处理放入您的委托中.您可以轻松地为此创建一个包装器方法:
public static Action<T> SuppressExceptions<T>(Action<T> action)
{
return item =>
{
try
{
action(item);
}
catch (Exception e)
{
// Log it, presumably
}
};
}
Run Code Online (Sandbox Code Playgroud)
说实话,如果可能的话,我会尽量避免这种情况.抓住所有这样的例外是令人不愉快的.它也不会记录失败的项目或异常等.您需要更详细地考虑您的要求:
创建一个使用普通foreach
循环的单独方法,处理错误并收集错误几乎肯定会更清晰.个人而言,我一般喜欢使用foreach
过ForEach
-你不妨读一读这个埃里克利珀的想法太.
归档时间: |
|
查看次数: |
2706 次 |
最近记录: |