V2.0 SDK における例外のタイプと、その処理方法について説明します。
例外のタイプ
V2.0 SDK の例外は、次のタイプに分類されます。
-
TeaUnretryableException: すべての再試行を行ってもネットワークの問題が解決しない場合にスローされます。
exception.getLastRequestを呼び出して、失敗したリクエストを確認できます。 -
TeaException: ビジネスエラーを示します。トラブルシューティングには、次のパラメーターを使用します。
-
code: OpenAPI のビジネスエラーコード。
-
message: RequestId を含むエラーメッセージ。
-
data: サーバーから返される詳細なエラー情報。
-
重要
この例はデモ用であり、出力を表示するだけです。本番環境では、例外を適切に処理してください。例外の伝播、ログへの記録、回復の試行などを行い、システムの安定性を確保してください。
import com.aliyun.ecs20140526.models.DescribeRegionsRequest;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.tea.ValidateException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Sample {
public static void main(String[] args) throws Exception {
Config config = new com.aliyun.teaopenapi.models.Config();
// 環境変数から RAM ユーザーの AccessKey ID を取得します。
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
// 環境変数から RAM ユーザーの AccessKey Secret を取得します。
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// リージョン ID。
config.setRegionId("<regionId>");
com.aliyun.ecs20140526.Client client = new com.aliyun.ecs20140526.Client(config);
DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
try {
client.describeRegions(describeRegionsRequest);
} catch (TeaUnretryableException ue) {
// これはデモ専用です。プロジェクトでは例外を慎重に処理し、無視しないでください。
ue.printStackTrace();
// エラーメッセージを出力します。
System.out.println(ue.getMessage());
// リクエストの記録を出力します。
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// これはデモ専用です。プロジェクトでは例外を慎重に処理し、無視しないでください。
e.printStackTrace();
// エラーコードを出力します。
System.out.println(e.getCode());
// RequestId を含むエラーメッセージを出力します。
System.out.println(e.getMessage());
// サーバーから返された具体的な内容を出力します。
System.out.println(e.getData());
}
}
}
例外の処理
API 呼び出しの例外をトラブルシューティングするには、次の手順に従います。
-
例外から RequestId をコピーし、OpenAPI 診断を使用して原因を特定します。 OpenAPI 診断。
-
関連する製品ドキュメントでエラーコードを確認してください。
-
よくある質問 で解決策を確認してください。
-
テクニカルサポートにお問い合わせください。