Как полностью обработать AggregateException - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующий код, который не компилируется, потому что компилятор думает, что returnValue может быть неопределенным:

private T ReturnData<T>(string url, string method)
{
    T returnValue;

    try
    {
        returnValue = base.ReturnData<T>(url, method); // An http task
    }
    catch (AggregateException ae)
    {
        ae.Handle(inner =>
        {
            // Essentially rethrow any error immediately. Don't even handle just throw.
            return false;
        });

    }

    return returnValue;
}

Я пытаюсь выяснить, почему вещи компилятора, которые возвращают returnValue, могут быть неинициализированы. Я неправильно использую Aggregate Exception Handler? Я знаю, что я просто возвращаю false, в основном сбрасывая ошибку. Почему этот код не компилируется? Какая часть вещей не обрабатывается должным образом.

Я заметил, что могу добавить throw после секции ae.Handle(...), но почему это заставляет вещи работать?

Пожалуйста, юморменя и игнорировать на мгновение, что я мог бы просто изменить строку

T returnValue; 

на

T returnValue = default;

, и она будет скомпилирована. Я сосредоточен на обработке / понимании AggregateException, в частности, используя .Handle

...