

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menangani kesalahan di AWS SDK for Java 2.x
<a name="handling-exceptions"></a>

Memahami bagaimana dan kapan pengecualian AWS SDK for Java 2.x melempar penting untuk membangun aplikasi berkualitas tinggi menggunakan SDK. Bagian berikut menjelaskan berbagai kasus pengecualian yang dilemparkan oleh SDK dan cara menanganinya dengan tepat.

## Mengapa pengecualian yang tidak dicentang?
<a name="why-unchecked-exceptions"></a>

Pengecualian AWS SDK untuk Java menggunakan runtime (atau tidak dicentang) alih-alih pengecualian yang dicentang karena alasan berikut:
+ Untuk memungkinkan pengembang mengontrol kesalahan yang ingin mereka tangani tanpa memaksa mereka untuk menangani kasus luar biasa yang tidak mereka khawatirkan (dan membuat kode mereka terlalu bertele-tele)
+ Untuk mencegah masalah skalabilitas yang melekat pada pengecualian yang diperiksa dalam aplikasi besar

Secara umum, pengecualian yang diperiksa bekerja dengan baik pada skala kecil, tetapi dapat menjadi merepotkan karena aplikasi tumbuh dan menjadi lebih kompleks.

## AwsServiceException (dan subclass)
<a name="sdkserviceexception-and-subclasses"></a>

 [AwsServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsServiceException.html)adalah pengecualian paling umum yang akan Anda alami saat menggunakan AWS SDK untuk Java. `AwsServiceException`adalah subkelas yang lebih umum [SdkServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkServiceException.html). `AwsServiceException`s mewakili respons kesalahan dari Layanan AWS. Misalnya, jika Anda mencoba menghentikan Amazon EC2 instance yang tidak ada, Amazon EC2 akan mengembalikan respons kesalahan dan semua detail respons kesalahan itu akan disertakan dalam `AwsServiceException` yang dilemparkan. 

Ketika Anda menemukan`AwsServiceException`, Anda tahu bahwa permintaan Anda berhasil dikirim ke Layanan AWS tetapi tidak dapat berhasil diproses. Ini bisa karena kesalahan dalam parameter permintaan atau karena masalah di sisi layanan.

 `AwsServiceException`memberi Anda informasi seperti:
+ Kode status HTTP yang dikembalikan
+ Kode AWS kesalahan yang dikembalikan
+ Pesan kesalahan terperinci dari layanan di [AwsErrorDetails](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsErrorDetails.html)kelas
+  AWS ID permintaan untuk permintaan yang gagal

Dalam kebanyakan kasus, subkelas khusus layanan dilemparkan untuk memungkinkan pengembang mengontrol `AwsServiceException` secara halus atas penanganan kasus kesalahan melalui blok catch. Referensi Java SDK API untuk [AwsServiceException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsServiceException.html)menampilkan sejumlah besar `AwsServiceException` subclass. Gunakan tautan subkelas untuk menelusuri untuk melihat pengecualian granular yang dilemparkan oleh layanan.

Misalnya, tautan berikut ke referensi SDK API menunjukkan hierarki pengecualian untuk beberapa hal umum. Layanan AWS Daftar subclass yang ditampilkan pada setiap halaman menunjukkan pengecualian spesifik yang dapat ditangkap oleh kode Anda.
+ [Amazon S3](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/model/S3Exception.html)
+ [DynamoDB](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/dynamodb/model/DynamoDbException.html)
+ [Amazon SQS](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sqs/model/SqsException.html)

Untuk mempelajari lebih lanjut tentang pengecualian, periksa `errorCode` pada [AwsErrorDetails](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/exception/AwsErrorDetails.html)objek. Anda dapat menggunakan `errorCode` nilai untuk mencari informasi di API panduan layanan. Misalnya jika tertangkap dan `AwsErrorDetails#errorCode()` nilainya`InvalidRequest`, gunakan [daftar kode kesalahan](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) di Referensi API Amazon S3 untuk melihat detail selengkapnya. `S3Exception`

## SdkClientException
<a name="sdkclientexception"></a>

 [SdkClientException](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/exception/SdkClientException.html)menunjukkan bahwa masalah terjadi di dalam kode klien Java, baik saat mencoba mengirim permintaan ke AWS atau saat mencoba mengurai respons dari AWS. An `SdkClientException` umumnya lebih parah daripada`SdkServiceException`, dan menunjukkan masalah besar yang mencegah klien melakukan panggilan layanan ke AWS layanan. Misalnya, AWS SDK untuk Java melempar `SdkClientException` jika tidak ada koneksi jaringan yang tersedia ketika Anda mencoba memanggil operasi pada salah satu klien.

## Pengecualian dan perilaku coba lagi
<a name="retried-exceptions"></a>

SDK for Java mencoba ulang permintaan untuk [beberapa pengecualian sisi klien](https://github.com/aws/aws-sdk-java-v2/blob/13985e0668a9a0b12ad331644e3c4fd1385c2cd7/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/retry/SdkDefaultRetrySetting.java#L79C41-L79C41) dan [untuk kode status HTTP](https://github.com/aws/aws-sdk-java-v2/blob/13985e0668a9a0b12ad331644e3c4fd1385c2cd7/core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/retry/SdkDefaultRetrySetting.java#L72C31-L72C31) yang diterimanya dari tanggapan. Layanan AWS Kesalahan ini ditangani sebagai bagian dari warisan `RetryMode` yang digunakan klien layanan secara default. Referensi Java API untuk `[RetryMode](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/RetryMode.html)` menjelaskan berbagai cara yang dapat Anda konfigurasi mode.

Untuk menyesuaikan pengecualian dan kode status HTTP yang memicu percobaan ulang otomatis, konfigurasikan klien layanan Anda dengan `[RetryPolicy](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/RetryPolicy.html)` yang menambahkan `[RetryOnExceptionsCondition](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/retry/conditions/RetryOnExceptionsCondition.html)` dan `[RetryOnStatusCodeCondition](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/retry/conditions/RetryOnErrorCodeCondition.html)` instance.