このトピックでは、Classic SDK の例外の種類と例外の処理方法について説明します。
Classic SDK では、例外はサーバーで発生する例外とクライアントで発生する例外の 2 つの種類に分類されます。レスポンスに ServerException が含まれている場合、例外はサーバーで発生しています。レスポンスに ClientException が含まれている場合、例外はクライアントで発生しています。例外が発生し、サーバーがリクエストを受信しない場合、例外の原因となったリクエストの ID を取得することはできません。サーバーが例外の原因となったリクエストを受信した場合、リクエスト ID を取得できます。その後、リクエスト ID を使用して、Alibaba Cloud のテクニカルサポートに支援を依頼できます。
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)
{
// クライアントインスタンスを作成してリクエストを開始します。
IClientProfile profile = DefaultProfile.GetProfile(
// リージョン ID。
"<your-region-id>",
// 環境変数からResource Access Management (RAM) ユーザーの AccessKey ID を取得します。
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
// 環境変数から RAM ユーザーの AccessKey シークレットを取得します。
Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
try
{
// リクエストを構築します。
DescribeInstancesRequest request = new DescribeInstancesRequest();
request.PageSize = 10;
// リクエストを開始し、レスポンスを取得します。
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);
// エラーが解決しない場合は、チケットを送信し、リクエスト ID を提供してテクニカルサポートを依頼できます。
Console.WriteLine("ErrorCode=" + e.RequestId);
}
catch (ClientException ex)
{
System.Console.WriteLine(ex.ToString());
// エラー処理ロジックを指定できます。
// 例:エラー情報を表示します。
Console.WriteLine("ErrorCode=" + ex.ErrorCode);
Console.WriteLine("ErrorMessage=" + ex.ErrorMessage);
}
}
}
}