全部產品
Search
文件中心

Alibaba Cloud SDK:異常處理

更新時間:Dec 24, 2025

本節主要介紹原版 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);
            }
        }
    }
}