

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

# 在 Step Functions 中使用 Workflow Studio 設定錯誤處理
<a name="workflow-studio-process-error"></a>

**管理狀態和轉換資料**  
了解如何[使用變數在狀態與使用 JSONata 轉換資料之間傳遞資料](workflow-variables.md)。 [ JSONata](transforming-data.md)

您可以在 Workflow Studio 視覺化編輯器中設定錯誤處理。根據預設，當狀態報告錯誤時，Step Functions 會導致工作流程執行完全失敗。對於動作和某些流程狀態，您可以設定 Step Functions 如何處理錯誤。

即使您已設定錯誤處理，某些錯誤仍可能導致工作流程執行失敗。如需詳細資訊，請參閱[處理 Step Functions 工作流程中的錯誤](concepts-error-handling.md)。在 Workflow Studio 中，在 的錯誤處理索引標籤中設定**錯誤處理**[Inspector 面板](workflow-studio.md#workflow-studio-components-formdefinition)。

## 發生錯誤時重試
<a name="workflow-studio-process-error-retry"></a>

您可以在動作狀態和[平行工作流程狀態](state-parallel.md)流程狀態中新增一或多個規則，以便在發生錯誤時重試任務。這些規則稱為*重試器*。若要新增重試器，請在**重試器 \$11** 方塊中選擇編輯圖示，然後設定其選項：
+ （選用） 在**註解**欄位中，新增您的註解。它不會影響工作流程，但可用於註釋工作流程。
+ 將游標放在**錯誤**欄位中，然後選擇會觸發重試器的錯誤，或輸入自訂錯誤名稱。您可以選擇或新增多個錯誤。
+ （選用） 設定**間隔**。這是 Step Functions 進行第一次重試之前的秒數。其他重試將按照您可以使用**最大嘗試次數**和**退避率**設定的間隔進行。
+ （選用） 設定**最大嘗試**次數。這是 Step Functions 導致執行失敗前的重試次數上限。
+ （選用） 設定**退避率**。這是乘數，取決於每次嘗試的重試間隔將增加多少。

**注意**  
並非所有錯誤處理選項都適用於所有狀態。Lambda 調用預設會設定一個重試器。

## 捕捉錯誤
<a name="workflow-studio-process-error-catch"></a>

您可以將一或多個規則新增至動作狀態，以及新增至 [平行工作流程狀態](state-parallel.md)和 [映射工作流程狀態](state-map.md) 流程狀態以擷取錯誤。這些規則稱為*捕捉器*。若要新增擷取器，請選擇**新增擷取器**，然後設定其選項：
+ （選用） 在**註解**欄位中，新增您的註解。它不會影響工作流程，但可用於註釋工作流程。
+ 將游標放在**錯誤**欄位中，然後選擇會觸發擷取器的錯誤，或輸入自訂錯誤名稱。您可以選擇或新增多個錯誤。
+ 在**備用狀態**欄位中，選擇[備用狀態](concepts-error-handling.md#error-handling-fallback-states)。這是在發現錯誤之後，工作流程將移至下一個狀態。
+ （選用） 在 **ResultPath** 欄位中，新增`ResultPath`篩選條件以將錯誤新增至原始狀態輸入。[`ResultPath`](input-output-resultpath.md) 必須是有效的 [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)。這將傳送至備用狀態。

## 逾時
<a name="workflow-studio-process-error-timeout"></a>

您可以設定動作狀態的逾時，以設定狀態在失敗前可執行的秒數上限。使用逾時來防止執行停滯。若要設定逾時，請輸入狀態在執行失敗之前應等待的秒數。如需逾時的詳細資訊，請參閱 `TimeoutSeconds` [任務工作流程狀態](state-task.md) 狀態。

## HeartbeatSeconds
<a name="workflow-studio-process-error-heartbeat"></a>

您可以設定任務傳送的*活動訊號*或定期通知。如果您設定活動訊號間隔，且狀態未以設定的間隔傳送活動訊號通知，則任務會標示為失敗。若要設定活動訊號，請設定正非零整數秒數。如需詳細資訊，請參閱 `HeartBeatSeconds` [任務工作流程狀態](state-task.md) 狀態。