AWS SDK for Java 2.x の例外処理 - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for Java 2.x の例外処理

AWS SDK for Java 2.x によって例外がスローされる仕組みとタイミングを理解することは、SDK を使用して高品質なアプリケーションを構築するために重要なことです。以下のセクションでは、SDK によってスローされる例外のさまざまなケース、および例外の適切な処理方法について説明します。

非チェック例外を使用する理由

AWS SDK for Java では、次の理由で、チェック例外ではなく実行時例外 (非チェック例外) が使用されます。

  • 懸念がない場合には例外ケースの処理を強制的に適用せずに (さらにコードを冗長にすることなく)、開発者がエラーを細かく制御できるようにするため。

  • サイズの大きいアプリケーションで、チェック例外に関連する拡張性の問題が発生するのを防ぐため。

一般的に、チェック例外は小規模なアプリケーションでは役立ちますが、アプリケーションのサイズが大きくなり、複雑化すると、チェック例外が問題となる場合があります。

AwsServiceException (およびサブクラス)

AwsServiceException は、 の使用時に発生する最も一般的な例外ですAWS SDK for Java。 AwsServiceExceptionは、より一般的な のサブクラスですSdkServiceExceptionAwsServiceExceptionは、 からのエラーレスポンスを表しますAWS サービス。例えば、存在しない Amazon EC2 インスタンスを終了しようとすると、Amazon EC2 からエラー応答が返り、そのエラー応答の詳細はすべて、スローされる AwsServiceException に含まれます。

AwsServiceException が発生した場合、リクエストは AWS サービス に適切に送信されましたが、正常に処理できませんでした。これは、リクエストのパラメータに含まれるエラーまたはサービス側の問題が原因です。

AwsServiceException では次のような情報がわかります。

  • 返された HTTP ステータスコード

  • 返された AWS エラーコード

  • AwsErrorDetails クラス内のサービスからの詳細なエラーメッセージ

  • 失敗したリクエストの AWS リクエスト ID

ほとんどの場合、AwsServiceException のサービス固有のサブクラスがスローされ、開発者はキャッチブロックを通じてエラーケースの処理を細かく制御できます。の Java SDK API リファレンスには、多数のAwsServiceExceptionサブクラスAwsServiceExceptionが表示されます。サブクラスリンクを使用してドリルダウンすると、サービスによってスローされた詳細な例外を確認できます。

たとえば、以下の SDK API リファレンスへのリンクは、いくつかの一般的なAWS サービス の例外階層を示しています。各ページに表示されるサブクラスのリストには、コードがキャッチできる特定の例外が表示されます。

例外の詳細については、 AwsErrorDetails オブジェクトerrorCodeの を調べます。errorCode 値を使用して、サービスガイド API の情報を検索できます。たとえば、S3Exception がキャッチされ、AwsErrorDetails#errorCode() 値が InvalidRequest の場合、Amazon S3 API リファレンスのエラーコードのリストを使用して詳細を確認してください。

SdkClientException

SdkClientException は、 にリクエストを送信しようとしたとき、AWSまたは からのレスポンスを解析しようとしたときに、Java クライアントコード内で問題が発生したことを示しますAWS。SdkClientException は、一般的に SdkServiceException よりも深刻な例外で、クライアントが AWS のサービスに対するサービス呼び出しを実行できないという重大な問題を示しています。たとえば、いずれかのクライアントでオペレーションを呼び出そうとしたときに、ネットワーク接続が利用できない場合、AWS SDK for Java は SdkClientException をスローします。

例外と再試行動作

SDK for Java は、いくつかのクライアント側の例外と、AWS サービス レスポンスから受け取った HTTP ステータスコードのリクエストを再試行します。これらのエラーは、サービスクライアントがデフォルトで使用するレガシー RetryMode の一部として処理されます。RetryMode の Java API リファレンスには、モードを設定するさまざまな方法が記載されています。

自動再試行をトリガーする例外と HTTP ステータスコードをカスタマイズするには、RetryOnExceptionsConditionRetryOnStatusCodeCondition インスタンスを追加する RetryPolicy をサービスクライアントに設定します。