

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

# エラー処理
<a name="error-handling"></a>

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

## サービス例外
<a name="service-exceptions"></a>

最も一般的な例外は で`AwsServiceException`、サービス固有の例外 ( など`S3Exception`) はすべて継承されます。この例外は、 AWS のサービスからのエラーレスポンスを表します。たとえば、存在しない Amazon EC2 インスタンスを終了しようとすると、Amazon EC2 はエラーレスポンスを返します。エラーレスポンスの詳細は、スロー`AwsServiceException`される に含まれています。

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

## クライアント例外
<a name="client-exceptions"></a>

`ClientException` は、 へのリクエストの送信中またはレスポンスの AWS SDK for Kotlin 解析 AWS 中に、クライアントコード内で問題が発生したことを示します AWS。`ClientException` は通常、 よりも重大`AwsServiceException`であり、クライアントが へのサービス呼び出しを処理できないという大きな問題があることを示します AWS のサービス。たとえば、 は、サービスからのレスポンスの解析に失敗`ClientException`した場合、 を AWS SDK for Kotlin スローします。

## エラーメタデータ
<a name="error-metadata"></a>

すべてのサービス例外とクライアント例外には `sdkErrorMetadata`プロパティがあります。これは、エラーに関する追加の詳細を取得するために使用できる型付きプロパティバッグです。

`AwsErrorMetadata` タイプには、いくつかの事前定義された拡張機能が直接存在します。これには、以下が含まれますが、これらに限定されません。
+ `sdkErrorMetadata.requestId` – 一意のリクエスト ID
+ `sdkErrorMetadata.errorMessage` – 人間が読み取れるメッセージ (通常は と一致しますが`Exception.message`、例外がサービスに不明な場合は詳細情報が含まれる場合があります)
+ `sdkErrorMetadata.protocolResponse` — raw プロトコルレスポンス

次の例は、エラーメタデータへのアクセスを示しています。

```
try {
    s3Client.listBuckets { ... }
} catch (ex: S3Exception) {
    val awsRequestId = ex.sdkErrorMetadata.requestId
    val httpResp = ex.sdkErrorMetadata.protocolResponse as? HttpResponse

    println("requestId was: $awsRequestId")
    println("http status code was: ${httpResp?.status}")
}
```