有没有一种简洁的方式来忽略Linq中的异常?也就是说,我有一个类ObjectA
,它在构造函数中接受一个字符串参数,并且在构造函数中有一些验证正在进行 - 这意味着如果字符串没有正确的格式,构造函数将抛出。通过下面的代码,我会从一个字符串列表获得ObjectA
列表:尝试Linq查询
var result = new List<ObjectA>();
foreach (string _s in ListOfFiles) {
try {
ObjectA _A = new ObjectA(_s);
result.Add(_A);
}
catch{}
}
所以我的问题是:是否有一个行LINQ的方式,一拉(伪代码来了...)
var result = ListOfFiles.Select(n => try {new ObjectA(n)}).ToList();
你可以做到这一点,在菲利普的溶液(他打我),但我不认为是个好主意。它可能导致大集合的性能不佳 - 异常非常昂贵 - 并且它在概念上也是“肮脏”的......相反,“ObjectA”可能暴露出一些方法,您可能会问'n'是否是合法值。如果有一天出于不同的原因抛出异常 - 如果你默默地吞噬所有的异常,追踪这个bug需要一段时间。 –
是的,我同意你@Konrad Morawski。 –
嗯,实际上它取决于。如果异常是特殊情况(即通常你没有),那么你可以使用大集合的异常处理。但永远不会永远不会吞噬异常,如果它发生 - 要么处理并记录它或包装并抛出 –