Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
971 of 1492 menu
◀ ▶

Метод Flatten

Flatten() возвращает новый AggregateException, у которого в InnerExceptions нет вложенных агрегатов - только конечные исключения. Так удобно читать цепочку после параллельных задач.

Синтаксис

AggregateException flat = agg.Flatten(); var list = flat.InnerExceptions;

Пример

Давайте развернём вложенный агрегат:

using System; class Program { static void Main() { var inner = new AggregateException( new InvalidOperationException("abcde")); var outer = new AggregateException(inner); var flat = outer.Flatten(); Console.WriteLine(flat.InnerExceptions.Count); Console.WriteLine(flat.InnerExceptions[0].Message); } }

Результат выполнения кода:

1 "abcde"

Пример

Давайте соберём два сбоя на разных уровнях:

using System; class Program { static void Main() { var inner = new AggregateException( new InvalidOperationException("abcde")); var outer = new AggregateException( inner, new InvalidOperationException("12345")); var flat = outer.Flatten(); Console.WriteLine(flat.InnerExceptions.Count); } }

Результат выполнения кода:

2

Пример

Давайте проверим тип после Flatten:

using System; class Program { static void Main() { var inner = new AggregateException( new InvalidOperationException("abcde")); var outer = new AggregateException(inner); var flat = outer.Flatten(); bool res = flat.InnerExceptions[0] is InvalidOperationException; Console.WriteLine(res); } }

Результат выполнения кода:

True

Смотрите также

  • InnerExceptions,
    коллекция после выравнивания
  • метод Handle,
    который обрабатывает каждый элемент
  • AggregateException,
    класс с методом Flatten
  • Exception,
    базовый тип вложенных сбоев
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить