首页 > 解决方案 > 如何捕获 azure 的限制异常?

问题描述

我有以下代码将 blob 上传到 Azure:

var cloudStorageAccount = await GetCloudStorageAccount(connectionString);
var blobClient = cloudStorageAccount.CreateCloudBlobClient();
var containerRef = blobClient.GetContainerReference(containerName);
var blobRef = containerRef.GetBlockBlobReference(fileName);
await blobRef.UploadTextAsync(fileContent);

我需要添加捕获限制异常的代码。例如,如果我上面的代码在循环中被调用并且尝试写入的次数超过了 Azure 中配置的限制,那么将抛出某种类型的 429(请求过多)错误。我怎样才能捕捉到那个异常?有没有像 AzureThrottleException 这样的特殊错误类?或者你能推荐另一种处理这种异常状态的方法吗?

标签: azure

解决方案


你可以试试 StorageException,所有的异常都可以在这里找到:common errorblob error

而对于节流,它的错误代码是 503 根据这个doc ->Throttling/ServerBusy部分。

因此,您可以编写如下代码:

try
{
//your code
}
catch(StorageException ex)
{
     var errorcode = ex.RequestInformation.ErrorCode;
     var statuscode = ex.RequestInformation.HttpStatusCode.ToString();
     Console.WriteLine("the error code is: "+errorcode);
     Console.WriteLine("the status code is: "+statuscode);
}

推荐阅读