我該如何着手收集異常並將它們放入AggregateException重新拋出?在我自己的代碼中拋出一個AggregateException
對於我的特定代碼,我有一個循環,並將有零個或多個從部分代碼拋出的異常。我希望只是在出現時將新的異常添加到AggregateException中,但文檔排序表明它應該與所有異常一起構造(沒有方法可以將異常添加到對象中)。
那麼每次創建一個新的AE以及如何將以前的AE包含在異常列表中呢?似乎一個好辦法做到這一點。
有什麼更好的點子?
我該如何着手收集異常並將它們放入AggregateException重新拋出?在我自己的代碼中拋出一個AggregateException
對於我的特定代碼,我有一個循環,並將有零個或多個從部分代碼拋出的異常。我希望只是在出現時將新的異常添加到AggregateException中,但文檔排序表明它應該與所有異常一起構造(沒有方法可以將異常添加到對象中)。
那麼每次創建一個新的AE以及如何將以前的AE包含在異常列表中呢?似乎一個好辦法做到這一點。
有什麼更好的點子?
你在說這樣的事嗎?
var exceptions = new List<Exception>();
foreach (var item in items) {
try {
DoSomething(item);
} catch (Exception ex) {
exceptions.Add(ex);
}
}
if (exceptions.Count > 0)
throw new AggregateException(
"Encountered errors while trying to do something.",
exceptions
);
似乎是最合乎邏輯的方式給我。
最簡單的方法是將例外添加到List,直到您準備好拋出AggregateException。
對於我來說,在下一次創建AggregateException時想要返回舊的異常似乎很奇怪,但是如果您保留List,那麼可以從中創建一個新的AggregateException。
就像@bbudge我很好奇,爲什麼你想包含舊的異常作爲新的AggregateException實例的一部分。這聽起來對我來說不好。 – Crono 2016-02-05 18:25:40
關鍵是在循環中聚合異常。似乎會有一個API來做到這一點,但最後我只是使用了一個List,並在最後創建了AggExc。 – Pat 2016-02-16 22:30:18