有沒有一種簡潔的方式來忽略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。 –
嗯,實際上它取決於。如果異常是特殊情況(即通常你沒有),那麼你可以使用大集合的異常處理。但永遠不會永遠不會吞噬異常,如果它發生 - 要麼處理並記錄它或包裝並拋出 –