我有以下无法编译的代码,因为编译器对可能未定义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