

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Fehlerbehandlung
<a name="error-handling"></a>

Es ist wichtig zu verstehen, wie AWS SDK für Kotlin und wann Ausnahmen ausgelöst werden, um qualitativ hochwertige Anwendungen mithilfe des SDK zu erstellen. In den folgenden Abschnitten werden die verschiedenen Fälle von Ausnahmen beschrieben, die vom SDK ausgelöst werden, und wie sie korrekt verarbeitet werden.

## Ausnahmen für Dienste
<a name="service-exceptions"></a>

Die häufigste Ausnahme ist die`AwsServiceException`, von der alle dienstspezifischen Ausnahmen (wie`S3Exception`) erben. Diese Ausnahme stellt eine Fehlerantwort von einem dar. AWS-Service Wenn Sie beispielsweise versuchen, eine EC2 Amazon-Instance zu beenden, die nicht existiert, gibt Amazon eine Fehlerantwort EC2 zurück. Die Details zur Fehlerantwort sind in der Datei enthalten`AwsServiceException`, die ausgelöst wird. 

Wenn Sie auf eine stoßen`AwsServiceException`, bedeutet dies, dass Ihre Anfrage erfolgreich an die gesendet wurde, AWS-Service aber nicht bearbeitet werden konnte. Dies kann an Fehlern in den Parametern der Anforderung oder an Problemen auf Seiten des Services liegen.

## Ausnahmen für Kunden
<a name="client-exceptions"></a>

`ClientException`weist darauf hin, dass im AWS SDK für Kotlin Client-Code ein Problem aufgetreten ist, entweder beim Versuch, eine Anfrage an zu senden, AWS oder beim Versuch, eine Antwort von AWS zu analysieren. A `ClientException` ist im Allgemeinen schwerwiegender als ein `AwsServiceException` und weist darauf hin, dass ein schwerwiegendes Problem darin besteht, den Client daran zu hindern, Serviceanrufe an zu AWS-Services verarbeiten. Beispielsweise gibt der Befehl AWS SDK für Kotlin a aus, `ClientException` wenn er eine Antwort von einem Dienst nicht analysieren kann.

## Fehler-Metadaten
<a name="error-metadata"></a>

Jede Service- und Client-Ausnahme hat die `sdkErrorMetadata` Eigenschaft. Dies ist ein typisierter Eigenschaften-Bag, der verwendet werden kann, um zusätzliche Informationen zu dem Fehler abzurufen.

Für den `AwsErrorMetadata` Typ existieren direkt mehrere vordefinierte Erweiterungen, einschließlich, aber nicht beschränkt auf die folgenden:
+ `sdkErrorMetadata.requestId`— die eindeutige Anfrage-ID
+ `sdkErrorMetadata.errorMessage`— die für Menschen lesbare Nachricht (entspricht normalerweise der`Exception.message`, kann aber mehr Informationen enthalten, wenn die Ausnahme dem Dienst unbekannt war)
+ `sdkErrorMetadata.protocolResponse`— Die rohe Protokollantwort

Das folgende Beispiel zeigt den Zugriff auf die Fehlermetadaten.

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