

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tratamento de erros
<a name="error-handling"></a>

Entender como e quando AWS SDK para Kotlin as exceções são lançadas é importante para criar aplicativos de alta qualidade usando o SDK. As seções a seguir descrevem os casos diferentes de exceções lançadas pelo SDK e como processá-las da maneira apropriada.

## Exceções de serviço
<a name="service-exceptions"></a>

A exceção mais comum é`AwsServiceException`, da qual todas as exceções específicas do serviço (como`S3Exception`) são herdadas. Essa exceção representa uma resposta de erro de um AWS service (Serviço da AWS). Por exemplo, se você tentar encerrar uma EC2 instância da Amazon que não existe, a Amazon EC2 retornará uma resposta de erro. Os detalhes da resposta ao erro estão incluídos no `AwsServiceException` que foi lançado. 

Quando você encontra um`AwsServiceException`, isso significa que sua solicitação foi enviada com sucesso para o AWS service (Serviço da AWS) , mas não pôde ser processada. Isso pode ocorrer devido a erros nos parâmetros da solicitação ou problemas no lado do serviço.

## Exceções do cliente
<a name="client-exceptions"></a>

`ClientException`indica que ocorreu um problema dentro do código do AWS SDK para Kotlin cliente, ao tentar enviar uma solicitação para AWS ou ao tentar analisar uma resposta do AWS. `ClientException`A geralmente é mais grave do que a `AwsServiceException` e indica que um grande problema está impedindo o cliente de processar as chamadas de serviço para Serviços da AWS o. Por exemplo, ele AWS SDK para Kotlin lança um `ClientException` se não conseguir analisar uma resposta de um serviço.

## Metadados de erro
<a name="error-metadata"></a>

Cada exceção de serviço e exceção de cliente tem a `sdkErrorMetadata` propriedade. Esse é um pacote de propriedades digitado que pode ser usado para recuperar detalhes adicionais sobre o erro.

Existem várias extensões predefinidas diretamente para o `AwsErrorMetadata` tipo, incluindo, mas não se limitando às seguintes:
+ `sdkErrorMetadata.requestId`— o ID de solicitação exclusivo
+ `sdkErrorMetadata.errorMessage`— a mensagem legível por humanos (geralmente corresponde à`Exception.message`, mas pode conter mais informações se a exceção for desconhecida pelo serviço)
+ `sdkErrorMetadata.protocolResponse`— A resposta bruta do protocolo

O exemplo a seguir demonstra o acesso aos metadados de erro.

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