

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

# でのエラーの処理 AWS SDK for Java 2.x
<a name="handling-exceptions"></a>

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

## 非チェック例外を使用する理由
<a name="why-unchecked-exceptions"></a>

は、次の理由でチェック例外の代わりにランタイム (またはチェックされていない) 例外 AWS SDK for Java を使用します。
+ 懸念がない場合には例外ケースの処理を強制的に適用せずに (さらにコードを冗長にすることなく)、開発者がエラーを細かく制御できるようにするため。
+ サイズの大きいアプリケーションで、チェック例外に関連する拡張性の問題が発生するのを防ぐため。

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

## AwsServiceException (およびサブクラス)
<a name="sdkserviceexception-and-subclasses"></a>

 [AwsServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsServiceException.html) は、 の使用時に発生する最も一般的な例外です AWS SDK for Java。 `AwsServiceException`は、より一般的な [SdkServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkServiceException.html) のサブクラスです。 `AwsServiceException`は、 からのエラーレスポンスを表します AWS のサービス。たとえば、存在しない Amazon EC2 インスタンスを終了しようとすると、 Amazon EC2 はエラーレスポンスを返し、そのエラーレスポンスのすべての詳細がスロー`AwsServiceException`される に含まれます。

が発生すると`AwsServiceException`、リクエストは に正常に送信されました AWS のサービス が、正常に処理できなかったことがわかります。これは、リクエストのパラメータに含まれるエラーまたはサービス側の問題が原因です。

 `AwsServiceException` では次のような情報がわかります。
+ 返された HTTP ステータスコード
+ 返された AWS エラーコード
+ [AwsErrorDetails](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsErrorDetails.html) クラスのサービスからの詳細なエラーメッセージ。
+  AWS 失敗したリクエストのリクエスト ID

ほとんどの場合、`AwsServiceException` のサービス固有のサブクラスがスローされ、開発者はキャッチブロックを通じてエラーケースの処理を細かく制御できます。[AwsServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsServiceException.html) の Java SDK API リファレンスには、多数の `AwsServiceException` サブクラスが表示されています。サブクラスリンクを使用してドリルダウンすると、サービスによってスローされた詳細な例外を確認できます。

たとえば、以下の SDK API リファレンスへのリンクは、いくつかの一般的な AWS のサービスの例外階層を示しています。各ページに表示されるサブクラスのリストには、コードがキャッチできる特定の例外が表示されます。
+ [Amazon S3](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/model/S3Exception.html)
+ [DynamoDB](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/dynamodb/model/DynamoDbException.html)
+ [Amazon SQS](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SqsException.html)

例外の詳細については、[AwsErrorDetails](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsErrorDetails.html) オブジェクトで `errorCode` を調べてください。`errorCode` 値を使用して、サービスガイド API の情報を検索できます。たとえば、`S3Exception` がキャッチされ、`AwsErrorDetails#errorCode()` 値が `InvalidRequest` の場合、Amazon S3 API リファレンスの[エラーコードのリスト](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList)を使用して詳細を確認してください。

## SdkClientException
<a name="sdkclientexception"></a>

 [SdkClientException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkClientException.html) は、 へのリクエストの送信中またはレスポンスの解析 AWS 中に、Java クライアントコード内で問題が発生したことを示します AWS。`SdkClientException` は通常、 よりも深刻であり`SdkServiceException`、クライアントが のサービスコールを実行できない大きな問題を示します AWS 。たとえば、いずれかのクライアントで オペレーションを呼び出そうとすると、ネットワーク接続が利用`SdkClientException`できない場合、 は を AWS SDK for Java スローします。

## 例外と再試行動作
<a name="retried-exceptions"></a>

SDK for Java は、いくつかの[クライアント側の例外](https://github.com/aws/aws-sdk-java-v2/blob/13985e0668a9a0b12ad331644e3c4fd1385c2cd7/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/retry/SdkDefaultRetrySetting.java#L79C41-L79C41)と AWS のサービス レスポンスから受信した [HTTP ステータスコード](https://github.com/aws/aws-sdk-java-v2/blob/13985e0668a9a0b12ad331644e3c4fd1385c2cd7/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/retry/SdkDefaultRetrySetting.java#L72C31-L72C31)のリクエストを再試行します。これらのエラーは、サービスクライアントがデフォルトで使用するレガシー `RetryMode` の一部として処理されます。`[RetryMode](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/RetryMode.html)` の Java API リファレンスには、モードを設定するさまざまな方法が記載されています。

自動再試行をトリガーする例外と HTTP ステータスコードをカスタマイズするには、`[RetryOnExceptionsCondition](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/conditions/RetryOnExceptionsCondition.html)`、`[RetryOnStatusCodeCondition](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/retry/conditions/RetryOnErrorCodeCondition.html)` インスタンスを追加する `[RetryPolicy](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/RetryPolicy.html)` をサービスクライアントに設定します。