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

InnerExceptions

У AggregateException InnerExceptions - это список всех сбоев, а не одно свойство InnerException у базового Exception. После Task.Wait() исходная ошибка задачи обычно лежит в этом списке.

Синтаксис

int count = agg.InnerExceptions.Count; string text = agg.InnerExceptions[0].Message;

Пример

Давайте прочитаем Count и Message первого элемента:

using System; using System.Threading.Tasks; class Program { static void Main() { try { Task.Run(() => { throw new InvalidOperationException("abcde"); }).Wait(); } catch (AggregateException ex) { Console.WriteLine(ex.InnerExceptions.Count); Console.WriteLine(ex.InnerExceptions[0].Message); } } }

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

1 "abcde"

Пример

Давайте соберём агрегат из двух исключений:

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

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

2

Пример

Давайте переберём сообщения в цикле:

using System; class Program { static void Main() { var ex = new AggregateException( new InvalidOperationException("abcde"), new InvalidOperationException("12345")); int len = 0; foreach (var item in ex.InnerExceptions) { len += item.Message.Length; } Console.WriteLine(len); } }

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

10

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

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