的異常處理 AWS SDK for Java 2.x - AWS SDK for Java 2.x

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

的異常處理 AWS SDK for Java 2.x

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

為什麼不檢查異常?

AWS SDK for Java 使用執行時間 (或未檢查) 例外狀況而非已檢查例外狀況,原因為下:

  • 為了讓開發人員能夠更精確的控制他們想處理的錯誤,而非強制他們處理不在乎的例外情況 (因而使得程式碼過於冗長)

  • 為了避免大型應用程式中已檢查例外狀況的固有擴展性問題

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

AwsServiceException (和子類別)

AwsServiceException是您在使用時會遇到的最常見的例外狀況AWS SDK for Java。 AwsServiceException是比較一般的子類別SdkServiceExceptionAwsServiceExceptions 表示來自的錯誤回應AWS 服務。例如,如果您嘗試終止一個不存在的Amazon EC2實例,Amazon EC2將返回一個錯誤響應,並且該錯誤響應的所有詳細信息將包含在拋出AwsServiceException的實例中。

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

AwsServiceException 為您提供資訊,例如:

  • 傳回 HTTP 狀態碼

  • 傳回AWS錯誤碼

  • 來自AwsErrorDetails類別中服務的詳細錯誤訊息

  • AWS失敗要求的要求識別碼

在大多數情況下,會擲回的服務特定子類AwsServiceException別,以允許開發人員透過 catch 區塊精細控制處理錯誤案例。用於AwsServiceException顯示大量AwsServiceException子類別的 Java SDK API 參考資料。使用子類別連結向下鑽研以查看服務所擲回的細微例外狀況。

例如,下列 SDK API 參考的連結會顯示一些常見的例外狀況階層AWS 服務。每個頁面上顯示的子類別清單會顯示程式碼可以 catch 取的特定例外狀況。

要了解有關異常的更多信息,請檢查AwsErrorDetails對象errorCode上的。您可以使用該errorCode值查詢服務指南 API 中的資訊。例如,如果捕獲到並且AwsErrorDetails#errorCode()值為InvalidRequest,請使用 Amazon S3 API 參考中的錯誤代碼清單來查看更多詳細資訊。S3Exception

SdkClientException

SdkClientException表示 Java 客戶端代碼中發生了一個問題,無論是在嘗試向其發送請求AWS或嘗試解析響應時AWS。A 通SdkClientException常比一個更嚴重SdkServiceException,並且表示阻止用戶端對服務進行服務呼叫的主要問題。AWS例如,若您嘗試對其中一個用戶端呼叫操作時沒有網路連線,AWS SDK for Java會擲回 SdkClientException

例外狀況和重試行為

SDK for Java 會重試數個用戶端例外狀況的要求,以及從AWS 服務回應接收的 HTTP 狀態碼。依預設,這些錯誤會做為服務用戶端使用的舊版RetryMode一部分來處理。的 Java API 參考RetryMode說明您可以設定模式的各種方式。

若要自訂觸發自動重試的例外狀況和 HTTP 狀態碼,請使用新增的執行個RetryOnStatusCodeConditionRetryOnExceptionsCondition和執行個RetryPolicy體來設定服務用戶端。