我该如何着手收集异常并将它们放入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