异常处理

更新时间:

本节主要介绍原版 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 ID
                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);
            }
        }
    }
}