在循环中处理多个异常

elo*_*los 5 c# exception-handling exception

在我的代码中,一个方法在循环中被重复调用,如下所示:

foreach (var file in files)
{
    SomeMethod(file);
}
Run Code Online (Sandbox Code Playgroud)

该方法可能会抛出异常,但我不希望代码在第一个异常后退出循环.

此外,上面的代码是从web api控制器调用的,所以我需要一种方法将所有异常信息传递回控制器,在那里它将被处理(记录异常并向客户端返回错误响应).

到目前为止我所做的是捕获并将所有异常存储在列表中.

var errors = new List<Exception>();

foreach (var file in files)
{
    try
    {
        SomeMethod(file);
    }
    catch(Exception ex)
    {
        errors.Add(ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到重新抛出列表中的所有错误不是一种选择,将异常信息返回给控制器的最佳方法是什么?

Hab*_*bib 5

使用AggregateException

您可以将 传递List<Exception>给其构造函数并抛出它。

在循环结束时执行以下操作:

AggregateException aggregateEx = new AggregateException(errors);
throw aggregateEx;
Run Code Online (Sandbox Code Playgroud)

(或返回AggregateException