AggregatedException -类型扩展异常的内部异常的访问属性



我有一个捕获AggregateException的方法。然而,我似乎无法访问添加到继承基本Exception的异常的内部异常上的属性。

例如:类型Azure.RequestFailedException包含属性ErrorCode。使用下面的代码,当处理AggregatedException时,我无法访问该属性,因为ex总是Exception类型。

Console.WriteLine(ex.ErrorCode);

'Exception'不包含'ErrorCode'的定义…

当异常是AggregatedException的一部分时,如何访问这些属性?

public Response GetBin(string binName)
{
try
{
BlobContainerClient container = this._storage.GetContainer(binName);
Azure.AsyncPageable<BlobItem> blobs = this._storage.GetBlobs(container);
return new GetBinResponse(container, blobs);
}
catch (AggregateException ae)
{
Response exResponse = null;
ae.Handle(ex =>
{
if (ex is Azure.RequestFailedException)
{
Console.WriteLine(ex.ErrorCode);
exResponse = new BinNotFoundExceptionResponse(binName);
return true;
}
else
{
exResponse = new BadRequestResponse(ex.Message);
return true;
}
});
return exResponse;
}
catch (Exception ex)
{
return new BadRequestResponse(ex.Message);
}
}

不能将转换为但只有检查的类型。用这个代替:

if (ex is Azure.RequestFailedException e)
{
Console.WriteLine(e.ErrorCode)
}

或者在c# 7中引入的模式匹配之前:

var e = ex as Azure.RequestFailedException;
if (e != null)
{
Console.WriteLine(e.ErrorCode)
}

最新更新