У меня есть следующий код, который не компилируется, потому что компилятор думает, что 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