在我自己的代码中抛出AggregateException

Pat*_*Pat 20 .net exception

我应该如何收集异常并将它们放入AggregateException以重新抛出?

对于我的特定代码,我有一个循环,并且将从代码的一部分抛出零个或多个异常.我希望在AggregateException出现时添加新的异常,但是文档类型表明它应该一次构造所有异常(没有方法向对象添加异常).

那么每次创建一个新的AE并且只包括异常列表中的前一个AE呢?似乎是一种很好的方式来做到这一点.

有更好的想法吗?

Dan*_*Tao 40

你在谈论这样的事吗?

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
    );
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是最合乎逻辑的方式.

  • 通常,人们会发现如此简短的示例很容易理解和理解,但是当您阅读 MS 文档(通常是大量文本)时,您仍然无法理解它们。它可以与具有 1000 多个符号的中文“字母表”相媲美,而拉丁字母表只需 20-30 个字符即可处理 (3认同)