本節主要介紹原版 SDK 的異常以及如何進行異常處理。
原版 SDK 的異常主要通過捕獲 ServerException 和 ClientException 異常來擷取錯誤資訊,在原版 SDK 中如果沒有請求到服務端則無法通過異常擷取到 RequestId, 如果請求得到了服務端則能擷取到 RequestId 這個屬性,通過這個屬性可以讓阿里雲的開發同學協助使用 OpenAPI 的開發人員排查問題。
using System;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Ecs.Model.V20140526;
namespace AlibabaCloud.SDK.Sample
{
class Program
{
static void Main(string[] args)
{
// 構建一個 Client,用於發起請求
IClientProfile profile = DefaultProfile.GetProfile(
// 地區ID
"<your-region-id>",
// 從環境變數擷取RAM使用者的AccessKey ID
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 從環境變數擷取RAM使用者的AccessKey SECRET
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
try
{
// 構造請求
DescribeInstancesRequest request = new DescribeInstancesRequest();
request.PageSize = 10;
// 發起請求,並得到 Response
DescribeInstancesResponse response = client.GetAcsResponse(request);
System.Console.WriteLine(response.TotalCount);
}
catch (ServerException e)
{
System.Console.WriteLine(e.ToString());
// 這裡可以添加您自己的錯誤處理邏輯
// 例如,列印具體的錯誤資訊
Console.WriteLine("ErrorCode=" + e.ErrorCode);
Console.WriteLine("ErrorMessage=" + e.ErrorMessage);
// 如果遇上棘手問題,可以提交工單,並將RequestId提供給我們
Console.WriteLine("ErrorCode=" + e.RequestId);
}
catch (ClientException ex)
{
System.Console.WriteLine(ex.ToString());
// 這裡可以添加您自己的錯誤處理邏輯
// 例如,列印具體的錯誤資訊
Console.WriteLine("ErrorCode=" + ex.ErrorCode);
Console.WriteLine("ErrorMessage=" + ex.ErrorMessage);
}
}
}
}