Бросок AggregateException в моем собственном коде

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

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

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

Какие-либо лучшие идеи?

20
задан Pat 11 June 2010 в 19:09
поделиться

2 ответа

Вы о чем-то подобном?

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

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

40
ответ дан 29 November 2019 в 23:44
поделиться

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

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

2
ответ дан 29 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: