

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Step Functions 中使用工作流程工作室配置错误处理
<a name="workflow-studio-process-error"></a>

**管理状态和转换数据**  
了解有关[使用变量在状态之间传递数据](workflow-variables.md)和[使用转换数据](transforming-data.md)的信息 JSONata。

可以在工作流程工作室可视化编辑器中配置错误处理。默认情况下，当某个状态报告错误时，Step Functions 会导致工作流执行完全失败。对于操作和某些流状态，您可以配置 Step Functions 处理错误的方式。

即使您配置了错误处理，某些错误仍可能导致工作流执行失败。有关更多信息，请参阅 [处理 Step Functions 工作流程中的错误](concepts-error-handling.md)。在工作流程工作室中，在[检查器面板](workflow-studio.md#workflow-studio-components-formdefinition)的**错误处理**选项卡中配置错误处理。

## 出错时重试
<a name="workflow-studio-process-error-retry"></a>

您可以向操作状态和 [Parallel 工作流程状态](state-parallel.md) 流状态添加一条或多条规则，以便在发生错误时重试任务。这些规则被称为*重试器*。要添加重试器，请选择**重试器 \$11** 框中的编辑图标，然后配置其选项：
+ （可选）在**注释**字段中，添加您的注释。它不会影响工作流，但可以用来为您的工作流添加注释。
+ 将光标置于**错误**字段中，选择将触发重试器的错误，或者输入自定义错误名称。您可以选择或添加多个错误。
+ （可选）设置**间隔**。这是 Step Functions 首次重试之前的时间（以秒为单位）。随后将按间隔进行其他重试，您可以根据**最大尝试次数**和**回退率**进行配置。
+ （可选）设置**最大尝试次数**。这是 Step Functions 导致执行失败之前的最大重试次数。
+ （可选）设置**回退率**。这是一个乘数，它决定每次尝试的重试间隔将增加多少。

**注意**  
并非所有错误处理选项都适用于所有状态。默认情况下，Lambda 调用会配置了一个重试器。

## 捕获错误
<a name="workflow-studio-process-error-catch"></a>

您可以向操作状态以及 [Parallel 工作流程状态](state-parallel.md) 和 [Map 状态工作流程。](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>

您可以为操作状态配置一个超时，用于设置状态在失败之前可以运行的最大秒数。使用超时可避免执行卡顿。要配置超时，请输入状态在执行失败之前应等待的秒数。有关超时的更多信息，请参阅 [Task 工作流程状态](state-task.md) 状态中的 `TimeoutSeconds`。

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

您可以配置任务发送的*检测信号*或定期通知。如果设置了检测信号间隔，并且状态未在配置的时间间隔内发送检测信号通知，则该任务将被标记为失败。要配置检测信号，请设置一个秒数，该值需为非零正整数。有关更多信息，请参阅 [Task 工作流程状态](state-task.md) 状态中的 `HeartBeatSeconds`。