我应该如何收集异常并将它们放入AggregateException中重新抛出?
对于我的特定代码,我有一个循环,并且将从代码的一部分抛出零个或多个异常。我原本只希望在新异常出现时将其添加到AggregateException中,但文档中指出应该一次使用所有异常来构造它(没有向对象添加异常的方法)。
如果每次都创建一个新的AE,并且只将以前的AE包含在异常列表中呢?这似乎是一种做作的方式。
有更好的主意吗?
发布于 2010-06-12 04:02:21
你是在说这样的事情吗?
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
);
对我来说似乎是最合乎逻辑的方式。
发布于 2010-06-12 03:13:39
最简单的方法是将异常添加到列表中,直到您准备好抛出AggregateException。
对我来说,下一次创建AggregateException时想要返回旧的异常似乎很奇怪,但是如果您保留了您的列表,那么您就可以由此构建一个新的AggregateException。
https://stackoverflow.com/questions/3025525
复制相似问题