

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)，以繼續接收新功能、可用性改善和安全性更新。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 例外狀況處理
<a name="java-dg-exceptions"></a>

了解 適用於 Java 的 AWS SDK 拋出例外狀況的方式和時間，對於使用 SDK 建置高品質應用程式至關重要。以下章節說明開發套件會擲回的不同例外狀況案例，以及如何正確處理這些狀況。

## 為什麼使用未檢查的例外狀況？
<a name="why-unchecked-exceptions"></a>

由於這些原因， 適用於 Java 的 AWS SDK 使用執行時間 （或未核取） 例外狀況，而非核取的例外狀況：
+ 為了讓開發人員能夠更精確的控制他們想處理的錯誤，而非強制他們處理不在乎的例外情況 (因而使得程式碼過於冗長)
+ 為了避免大型應用程式中已檢查例外狀況的固有擴展性問題

一般而言，已檢查例外狀況在小規模上可運作良好，但會隨著應用程式增長且更複雜而變得棘手。

如需使用已勾選和未勾選例外狀況的詳細資訊，請參閱：
+  [未檢查的例外狀況 - 爭用](http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html) 
+  [已檢查例外狀況的問題](http://www.artima.com/intv/handcuffs2.html) 
+  [Java 檢查的例外狀況是錯誤 （以下是我想要執行的操作）](http://radio-weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWereAMistake.html) 

## AmazonServiceException (和子類別)
<a name="amazonserviceexception-and-subclasses"></a>

 [AmazonServiceException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/AmazonServiceException.html) 是使用 時會遇到的最常見例外狀況 適用於 Java 的 AWS SDK。此例外狀況代表來自 的錯誤回應 AWS 服務。例如，如果您嘗試終止不存在的 Amazon EC2 執行個體，EC2 會傳回錯誤回應，而該錯誤回應的所有詳細資訊都會包含在`AmazonServiceException`擲出的 中。在某些情況下，會擲回 `AmazonServiceException` 的子類別以讓開發人員透過 catch 區塊更精確的控制錯誤情況處理。

當您遇到 時`AmazonServiceException`，您知道您的請求已成功傳送到 ， AWS 服務 但無法成功處理。這可能是因為請求參數中的錯誤，或因為服務端的問題。

 `AmazonServiceException` 為您提供資訊，例如：
+ 傳回 HTTP 狀態碼
+ 傳回的 AWS 錯誤碼
+ 來自該服務的詳細錯誤訊息
+  AWS 失敗請求的請求 ID

 `AmazonServiceException` 也包含有關失敗請求是發起人的錯誤 （具有非法值的請求） 還是 AWS 服務錯誤 （內部服務錯誤） 的資訊。

## AmazonClientException
<a name="amazonclientexception"></a>

 [AmazonClientException](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/AmazonClientException.html) 指出在嘗試傳送請求至 或嘗試剖析回應時，Java AWS 用戶端程式碼內發生問題 AWS。`AmazonClientException` 通常比 更嚴重`AmazonServiceException`，並指出導致用戶端無法對 AWS 服務進行服務呼叫的主要問題。例如，當您嘗試呼叫其中一個用戶端上的 操作時，`AmazonClientException`如果沒有可用的網路連線， 會 適用於 Java 的 AWS SDK 擲回 。