.net 在我自己的代码中抛出AggregateException
我应该如何收集异常并将它们放入一个重新抛出的对象中 对于我的特定代码,我有一个循环,并且将从代码的一部分引发零个或多个异常。我希望在出现新异常时将其添加到AggregateException中,但是文档表明它应该一次使用所有异常进行构造(没有方法向对象添加异常) 那么,每次创建一个新的AE,并将以前的AE包含在例外列表中,又如何呢?这似乎是一个愚蠢的方法.net 在我自己的代码中抛出AggregateException,.net,exception,.net,Exception,我应该如何收集异常并将它们放入一个重新抛出的对象中 对于我的特定代码,我有一个循环,并且将从代码的一部分引发零个或多个异常。我希望在出现新异常时将其添加到AggregateException中,但是文档表明它应该一次使用所有异常进行构造(没有方法向对象添加异常) 那么,每次创建一个新的AE,并将以前的AE包含在例外列表中,又如何呢?这似乎是一个愚蠢的方法 有更好的主意吗?最简单的方法是将异常添加到列表中,直到您准备好抛出AggregateException 我觉得奇怪的是,下次创建Aggrega
有更好的主意吗?最简单的方法是将异常添加到列表中,直到您准备好抛出AggregateException
我觉得奇怪的是,下次创建AggregateException时,您会希望返回旧的异常,但是如果您保留列表,您可以从中创建一个新的AggregateException。您是在说这样的事情吗
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
);
var异常=新列表();
foreach(项目中的var项目){
试一试{
剂量测定(项目);
}捕获(例外情况除外){
例外情况。添加(ex);
}
}
如果(异常数>0)
抛出新的AggregateException(
“尝试执行某些操作时遇到错误。”,
例外情况
);
对我来说,这似乎是最符合逻辑的方式。就像@bbudge一样,我很好奇为什么要将旧异常作为新AggregateException实例的一部分。对我来说这听起来是个坏主意,关键是在循环中聚合异常。似乎有一个API可以做到这一点,但最后我只是使用了一个列表,并在最后创建了AggExc。人们经常会发现这样简短的例子很容易理解,但当你阅读MS文档时,往往是大量的文本,你仍然不理解它们。它相当于汉语的“字母表”,它有超过1000个符号,而拉丁字母表只需20-30个字符就可以处理这些符号