Создание AggregateException в моем собственном коде - PullRequest
20 голосов
/ 11 июня 2010

Как мне собирать исключения и помещать их в AggregateException для повторного выброса?

Для моего конкретного кода у меня есть цикл, и будет иметь ноль или более исключений из части кода. Я надеялся просто добавить новые исключения в AggregateException по мере их возникновения, но документация вроде указывает, что оно должно быть создано со всеми исключениями одновременно (нет способа добавить исключение в объект).

А как насчет создания нового AE каждый раз и просто включения предыдущего AE в список исключений? Кажется, это может показаться странным способом.

Есть идеи получше?

Ответы [ 2 ]

40 голосов
/ 12 июня 2010

Вы говорите о чем-то подобном?

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
    );

Мне кажется, это самый логичный путь.

2 голосов
/ 11 июня 2010

Простейшим способом было бы добавлять исключения в Список, пока вы не будете готовы выбросить AggregateException.

Мне кажется странным, что вы захотите вернуть старые исключения в следующий раз, когда создадитеAggregateException, но если вы держите свой список вокруг, вы можете просто создать новое AggregateException из этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...