

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 오류 처리
<a name="error-handling"></a>

에서 예외가 AWS SDK for Kotlin 발생하는 방법과 시기를 이해하는 것은 SDK를 사용하여 고품질 애플리케이션을 구축하는 데 중요합니다. 다음 단원에서는 SDK에서 발생하는 다양한 예외의 경우와 이러한 예외를 적절히 처리하는 방법에 대해 설명합니다.

## 서비스 예외
<a name="service-exceptions"></a>

가장 일반적인 예외는 모든 서비스별 예외(예: `S3Exception`)가 상속`AwsServiceException`하는 입니다. 이 예외는 AWS 서비스의 오류 응답을 나타냅니다. 예를 들어 존재하지 않는 Amazon EC2 인스턴스를 종료하려고 하면 Amazon EC2가 오류 응답을 반환합니다. 오류 응답 세부 정보는 `AwsServiceException` 발생한에 포함됩니다.

가 발생하면 요청이 로 성공적으로 전송되었지만 처리할 수 AWS 서비스 없음을 `AwsServiceException`의미합니다. 이는 요청의 파라미터 오류 또는 서비스 측의 문제로 인해 발생할 수 있습니다.

## 클라이언트 예외
<a name="client-exceptions"></a>

`ClientException`는 요청을에 보내려고 하거나 응답을 구문 분석하려고 할 AWS 때 클라이언트 코드 내에서 AWS SDK for Kotlin 문제가 발생했음을 나타냅니다 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` - 원시 프로토콜 응답

다음 예제에서는 오류 메타데이터에 액세스하는 방법을 보여줍니다.

```
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}")
}
```