錯誤處理簡介

在 Application Integration 中,測試及發布整合項目時,或是在執行整合項目期間,可能會發生錯誤。這些錯誤可能是用戶端和伺服器端問題所致,大致可分為以下幾類:

  • 永久錯誤: 所有用戶端錯誤 (例如驗證失敗、資料驗證錯誤) 都視為永久錯誤。永久性錯誤會導致工作永久失敗。
  • 暫時性錯誤: 所有伺服器端錯誤,例如 HTTP 503 (服務無法使用)、HTTP 400 (要求無效),都視為暫時性錯誤。暫時性錯誤會導致工作暫時失敗。

錯誤訊息會顯示在下列位置:

  • 執行記錄頁面:顯示執行整合時發生的錯誤。每次執行整合作業都會產生不同的記錄項目。如要瞭解執行記錄頁面,請參閱「執行記錄」。
  • 整合編輯器頁面:顯示發布整合功能時發生的錯誤。錯誤會顯示在整合編輯器頁面底部。如要瞭解整合服務編輯器頁面,請參閱「整合服務編輯器」。

如要瞭解可能遇到的錯誤代碼清單,請參閱「錯誤代碼」。

錯誤處理方法

應用程式整合支援下列錯誤處理方法,可拋出、擷取、重試及自訂整合中發生的錯誤:

  • 錯誤處理策略:工作錯誤處理策略會指定工作因暫時性錯誤而失敗時,應採取的動作。您可以為同步和非同步執行模式指定不同的錯誤處理策略。
  • 錯誤擷取器:錯誤擷取器可定義自訂方式,處理整合中已識別的觸發條件、工作或邊緣條件失敗情形。您可以在單一整合中定義一或多個錯誤擷取器,以處理工作錯誤和/或執行失敗。您可以使用名為「錯誤擷取器觸發條件」的觸發條件,叫用每個錯誤擷取器,執行為處理錯誤而自訂的一組整合工作。

您可以針對整合執行作業的同步和非同步模式,使用錯誤處理方法:

最佳做法

在整合中同時使用錯誤處理策略錯誤擷取器。如果發生任何錯誤,整合功能會遵循錯誤處理章節中定義的策略。用盡設定的錯誤處理策略後,系統會觸發錯誤擷取器邏輯。使用系統變數擷取錯誤代碼和錯誤訊息的值,並傳送至錯誤擷取流程。

範例

假設您有建立訂單的整合流程,系統會在 MySQL 適用的 Cloud SQL 中建立新訂單。這個流程會使用連接器工作 (本例為「建立訂單」) 連線至 MySQL 適用的 Cloud SQL。如果資料庫發生中斷情形,連接器工作會在將新訂單插入資料庫時擲回錯誤。最佳做法是在整合中同時使用錯誤處理策略錯誤擷取器

如要新增錯誤處理策略,請在整合設計工具中按一下連接器工作,開啟工作設定窗格。下圖顯示為「建立訂單」連接器工作設定的錯誤處理策略:

「建立訂單」連接器工作的錯誤處理策略 「建立訂單」連接器工作的錯誤處理策略

如要新增錯誤處理策略,請在整合設計工具中按一下「Call REST Endpoint」(呼叫 REST 端點) 任務,開啟任務設定窗格。下圖顯示為「呼叫 REST 端點」工作設定的錯誤處理策略:

呼叫 REST 端點任務的錯誤處理策略 呼叫 REST 端點任務的錯誤處理策略

如要新增錯誤擷取器,請在整合設計工具中按一下「Call REST Endpoint」(呼叫 REST 端點) 任務,開啟任務設定窗格。在「Error Catcher」部分,新增錯誤擷取器詳細資料。下圖顯示為「Call REST Endpoint」(呼叫 REST 端點) 任務設定的錯誤擷取器:

呼叫 REST 端點任務的錯誤擷取器 呼叫 REST 端點任務的錯誤擷取器

錯誤代碼

下表說明您可能會遇到的錯誤,以及造成這些錯誤的原因。Application Integration 使用 google.rpc.Code 中定義的標準錯誤代碼。

如要瞭解 Application Integration 錯誤和不同的錯誤處理策略,請參閱「錯誤和錯誤處理」。

標準例外狀況類型 標準代碼 HTTP 代碼 說明
FailedPreconditionException FAILED_PRECONDITION 400 無法在目前的系統狀態下執行要求。
BadRequestException INVALID_ARGUMENT 400 用戶端指定的引數無效。請檢查錯誤訊息和錯誤詳細資料以瞭解詳情。
UnauthenticatedException UNAUTHENTICATED 401 OAuth 權杖遺漏、無效或過期,因此無法驗證要求。
ForbiddenException PERMISSION_DENIED 403 用戶端權限不足。這可能是因為 OAuth 憑證的範圍不正確、用戶端沒有必要權限,或 API 尚未啟用。
NotFoundException NOT_FOUND 404 找不到指定的資源。
AlreadyExistsException ALREADY_EXISTS 409 用戶端嘗試建立的資源已存在。
InternalError INTERNAL 500 發生內部伺服器錯誤。通常是伺服器的錯誤。如果任何工作或觸發條件設定錯誤,就可能發生這種情況。
UnimplementedException UNIMPLEMENTED 501 伺服器未執行 API 方法。
ServiceUnavailableException UNAVAILABLE 503 服務無法使用,通常是因伺服器停止運作所致。
AbortedException ABORTED 409 回覆大小超過上限。