Выброс AggregateException в моем собственном коде
Как мне нужно собирать исключения и помещать их в AggregateException для повторного броска?
Для моего конкретного кода у меня есть цикл и будет иметь ноль или несколько исключений, которые будут выбрасываться из части кода. Я надеялся просто добавить новые исключения в AggregateException по мере их возникновения, но тип документации указывает, что он должен быть сконструирован со всеми Исключениями одновременно (нет способа добавить исключение к объекту).
А как насчет создания нового AE каждый раз и просто включения предыдущего AE в список исключений? Кажется, это хоккейный способ сделать это.
Любые лучшие идеи?
Ответы
Ответ 1
Вы говорите о чем-то подобном?
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
Простейшим способом было бы добавить исключения в список, пока вы не будете готовы выбросить исключение AggregateException.
Мне кажется странным, что вы захотите вернуть старые исключения в следующий раз, когда вы создадите исключение AggregateException, но если вы сохранили свой список вокруг, вы могли бы просто создать новое исключение AggregateException из этого.