Метод 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,
базовый тип вложенных сбоев