如果我有以下工作代码:
List<MyClass> results = new List<MyClass>();
for(int i = 0; i < source.Count; i++)
try{ results.Add(Fetch(source[i])); }
catch(Exception ex){ results.Add(new MyClass("poof!")); }
...
public MyClass Fetch(Object source){ ... }
并且想将其重新制作成 LINQ,我该如何管理try-catch?如果我把它放在下面的表达式周围,它不会让我大吃一惊。我的建议是迁移到该方法中,但我不确定这是多么优化/推荐。一个人能说出来还是取决于场景的具体情况?
IEnumerable<String> strings = source.Select(e => Fetch(e));
public MyClass Fetch(Object source){ try{ ... } catch(){ ... } }
像这样的伪代码会很酷。我正在考虑这种方法.First()
,它是更强大的兄弟.FirstOrDefault()
,但具有额外的容量。
IEnumerable<String> strings = source.Select(e => Fetch(e)).Excepted(...);
我走远了吗?