AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日にサポート終了
例外処理
AWS SDK for Java によって例外がスローされる仕組みとタイミングを理解することは、SDK を使用して高品質なアプリケーションを構築するために重要なことです。以下のセクションでは、SDK によってスローされる例外のさまざまなケース、および例外の適切な処理方法について説明します。
非チェック例外を使用する理由
AWS SDK for Java では、次の理由で、チェック例外ではなく実行時例外 (非チェック例外) が使用されます。
-
懸念がない場合には例外ケースの処理を強制的に適用せずに (さらにコードを冗長にすることなく)、開発者がエラーを細かく制御できるようにするため。
-
サイズの大きいアプリケーションで、チェック例外に関連する拡張性の問題が発生するのを防ぐため。
一般的に、チェック例外は小規模なアプリケーションでは役立ちますが、アプリケーションのサイズが大きくなり、複雑化すると、チェック例外が問題となる場合があります。
チェック例外と非チェック例外の使用方法の詳細については、以下を参照してください。
AmazonServiceException (およびサブクラス)
AmazonServiceException は、AWS SDK for Java を使用する場合に最も多く発生する例外です。この例外は、AWS のサービス からのエラーレスポンスを表します。たとえば、存在しない Amazon EC2 インスタンスを終了しようとすると、EC2 からエラーレスポンスが返り、そのエラーレスポンスの詳細はすべて、スローされる AmazonServiceException に含まれます。場合によっては、AmazonServiceException のサブクラスがスローされ、開発者は catch ブロックを使用して、エラーケースの処理を細かく制御できるようになります。
AmazonServiceException が発生した場合、リクエストは AWS のサービス に適切に送信されましたが、正常に処理できませんでした。これは、リクエストのパラメータに含まれるエラーまたはサービス側の問題が原因です。
AmazonServiceException では次のような情報がわかります。
-
返された HTTP ステータスコード
-
返された AWS エラーコード
-
サービスからの詳細なエラーメッセージ
-
AWS失敗したリクエストの リクエスト ID
AmazonServiceException には、失敗したリクエストが呼び出し元のエラー (無効な値を含むリクエストなど) であるか、AWS のサービス のエラー (内部サービスエラーなど) であるかに関する情報も含まれています。
AmazonClientException
AmazonClientException は、AWS にリクエストを送信しようとしたとき、または AWS からのレスポンスを解析しようとしたときに、Java クライアントコード内で問題が発生したことを示しています。AmazonClientException は、一般的に AmazonServiceException よりも深刻な例外で、クライアントが AWS のサービスに対するサービス呼び出しを実行できないという重大な問題を示しています。たとえば、いずれかのクライアントでオペレーションを呼び出そうとしたときに、ネットワーク接続が利用できない場合、AWS SDK for Java は AmazonClientException をスローします。