我正在从WindowsAzure.StorageClient 1.7迁移到WindowsAzure.Storage 2.0,并且现在正在致力于异常的管理。遵循此guide和其他来源后,我发现我不得不从
try
{
// Something
}
catch (StorageClientException e)
{
switch (e.ErrorCode)
{
case StorageErrorCode.ContainerNotFound:
case StorageErrorCode.ResourceNotFound:
case StorageErrorCode.BlobNotFound:
case StorageErrorCode.ConditionFailed:
// Do something
}
}
至
try
{
// Something
}
catch (StorageException e)
{
switch (e.RequestInformation.ExtendedErrorInformation.ErrorCode)
{
case StorageErrorCodeStrings.ContainerNotFound:
case StorageErrorCodeStrings.ResourceNotFound:
case BlobErrorCodeStrings.BlobNotFound:
case StorageErrorCodeStrings.ConditionNotMet:
// Do something
}
}
看起来很简单。
问题是ExtendedErrorInformation始终等于null。 HttpStatusMessage应该说“指定的blob不存在。”。
我以为它是由测试环境的模拟器引起的,但是在真实的Azure环境中进行尝试使我陷入了同样的境地。
任何想法?
最佳答案
另一种选择是改为查看RequestInformation.HttpStatusCode
。无论如何,这似乎更可靠。您的代码可以很容易地转换为:
try
{
// Something
}
catch (StorageException e)
{
switch (e.RequestInformation.HttpStatusCode)
{
case (int)HttpStatusCode.NotFound:
case (int)HttpStatusCode.PreconditionFailed:
// Do something
}
}