我应该如何收集异常并将它们放入AggregateException重新投掷?
对于我的特定代码,我有一个循环,并且将从代码的一部分抛出零个或多个异常。我希望在AggregateException出现时添加新的异常,但文档类型表明它应该一次构造所有异常(没有方法向对象添加异常)。
那么每次创建一个新的AE并将异常列表中的前一个AE包括在内怎么样?看起来很简单。
有更好的想法吗?
答案 0 :(得分:39)
你在谈论这样的事吗?
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
);
对我来说似乎是最合乎逻辑的方式。
答案 1 :(得分:2)
最简单的方法是在您准备抛出AggregateException之前将异常添加到List。
我觉得你想在下次创建AggregateException时返回旧的异常似乎很奇怪,但是如果你保持你的List,你可以从中构建一个新的AggregateException。