全部產品
Search
文件中心

Alibaba Cloud SDK:異常處理

更新時間:Oct 29, 2024

V2.0 SDK將異常的種類進行了一定的細分,主要細分為以下幾個Exception:

  • TeaUnretryableException:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出,可以通過exception.getLastRequest來查詢錯誤發生時的請求資訊。

  • TeaException: 在SDK的請求中主要以業務報錯為主的異常,該異常的樣本中提供了三個參數為使用者排查問題提供協助:

    • code: OpenAPI業務報錯的錯誤碼。

    • message:OpenAPI業務報錯的錯誤資訊,其中會包含本次請求的RequestId。

    • data:OpenAPI報錯後服務端返回的詳細資料。

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;


namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        /**
         * 使用AK&SK初始化帳號Client
         * @param accessKeyId
         * @param accessKeySecret
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.SDK.Ecs20140526.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.odels.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
            config.Endpoint = "ecs.cn-qingdao.aliyuncs.com";
            return new AlibabaCloud.SDK.Ecs20140526.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Ecs20140526.Client client = CreateClient();
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeInstancesRequest describeInstancesRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeInstancesRequest
            {
                RegionId = "cn-qingdao",
            };
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            try
            {
                client.DescribeInstancesWithOptions(describeInstancesRequest, runtime);
            }
            catch (TeaException error)
            {
                // 錯誤 message
                Console.WriteLine(error.Message);
                // 診斷地址
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // 錯誤 message
                Console.WriteLine(error.Message);
                // 診斷地址
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }


    }
}