Свойство Exception
Task.Exception после сбоя хранит
AggregateException. Сообщение
исходной ошибки - в
InnerExceptions[0]. При успехе
свойство null. Флаг сбоя -
IsFaulted.
Синтаксис
AggregateException? error = task.Exception;
Пример
Давайте прочитаем сообщение сбоя:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromException(
new InvalidOperationException("abcde"));
await Task.Yield();
string res = task.Exception!.InnerExceptions[0].Message;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверить null у успешной
задачи:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromResult(12345);
await task;
bool res = task.Exception == null;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте убедиться, что тип обёртки -
AggregateException:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var task = Task.FromException(
new InvalidOperationException("abcde"));
await Task.Yield();
bool res = task.Exception is AggregateException;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
FromException,
задача со сбоем -
свойство
Result,
тоже бросаетAggregateException -
метод
Wait,
синхронное ожидание с обёрткой -
Task,
класс, где объявлено свойство