Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在我自己的代码中抛出AggregateException_.net_Exception - Fatal编程技术网

.net 在我自己的代码中抛出AggregateException

.net 在我自己的代码中抛出AggregateException,.net,exception,.net,Exception,我应该如何收集异常并将它们放入一个重新抛出的对象中 对于我的特定代码,我有一个循环,并且将从代码的一部分引发零个或多个异常。我希望在出现新异常时将其添加到AggregateException中,但是文档表明它应该一次使用所有异常进行构造(没有方法向对象添加异常) 那么,每次创建一个新的AE,并将以前的AE包含在例外列表中,又如何呢?这似乎是一个愚蠢的方法 有更好的主意吗?最简单的方法是将异常添加到列表中,直到您准备好抛出AggregateException 我觉得奇怪的是,下次创建Aggrega

我应该如何收集异常并将它们放入一个重新抛出的对象中

对于我的特定代码,我有一个循环,并且将从代码的一部分引发零个或多个异常。我希望在出现新异常时将其添加到AggregateException中,但是文档表明它应该一次使用所有异常进行构造(没有方法向对象添加异常)

那么,每次创建一个新的AE,并将以前的AE包含在例外列表中,又如何呢?这似乎是一个愚蠢的方法


有更好的主意吗?

最简单的方法是将异常添加到列表中,直到您准备好抛出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个字符就可以处理这些符号