```
---
title: "处理错误"
icon: "arrow-rotate-right"
---

![](https://assets-docs.dify.ai/2024/12/6e2655949889d4d162945d840d698649.png)
[大型语言模型](/en/guides/workflow/node/llm), [HTTP](/en/guides/workflow/node/http-request), [代码](/en/guides/workflow/node/code), 和 [工具](/en/guides/workflow/node/tools) 节点支持开箱即用的错误处理。当一个节点失败时，它可以采取以下三种行为之一：

<AccordionGroup>
  <Accordion title="无">
    默认行为。当一个节点失败时，整个工作流停止。您将获得原始错误信息。

    在以下情况下使用此选项：
    - 您正在测试并希望查看哪个部分出错
    - 工作流无法在没有此步骤的情况下继续
  </Accordion>
  <Accordion title="默认值">
    当一个节点失败时，使用备份值代替。工作流继续运行。

    ![](https://assets-docs.dify.ai/2024/12/e9e5e757090679243e0c9976093c7e6c.png)

    **要求**
    - 默认值必须与节点的输出类型匹配 —— 如果它输出一个字符串，您的默认值也必须是一个字符串。

    **示例**

    您的LLM节点通常返回分析结果，但有时由于速率限制而失败。设置一个默认值，例如：

    ```
    "抱歉，我暂时不可用。请稍后再试。"
    ```

    现在，用户将收到一条帮助信息，而不是一个中断的工作流。
  </Accordion>
  <Accordion title="失败分支">
    当一个节点失败时，触发一个单独的流程来处理错误。

    ![](https://assets-docs.dify.ai/2024/12/e5ea1af947818bd9e27cab3042c1c4f3.png)

    失败分支用橙色高亮显示。您可以：
    - 发送错误通知
    - 尝试不同的方法
    - 记录错误以进行调试
    - 使用备份服务
    **示例**

    您的主要API失败，因此失败分支调用备份API。用户永远不会知道有问题存在。
  </Accordion>
</AccordionGroup>

## 循环/迭代节点中的错误

当子节点在循环和迭代中失败时，这些控制流节点有自己的错误行为。

**循环节点**总是在任何子节点失败时立即停止。整个循环终止并返回错误，防止运行任何进一步的迭代。

**迭代节点**允许您通过错误处理模式设置选择如何处理子节点失败：

- `terminated` - 当任何项目失败时立即停止处理（默认）
- `continue-on-error` - 跳过失败的项目并继续下一个
- `remove-abnormal-output` - 继续处理但从最终输出中过滤掉失败的项目

当您将迭代设置为`continue-on-error`时，失败的项目在输出数组中返回`null`。当您使用`remove-abnormal-output`时，输出数组仅包含成功的结果，使其比输入数组更短。

## 错误变量

使用默认值或失败分支时，您将获得两个特殊变量：

- `error_type` - 发生了什么类型的错误（参见[错误类型](en/guides/workflow/error-handling/error-type)）
- `error_message` - 实际的错误详情

使用这些变量来：
- 向用户显示有帮助的信息
- 向您的团队发送警报
- 选择不同的恢复策略
- 记录错误以进行调试

**示例**

```
{% if error_type == "rate_limit" %}
请求过多。请稍等片刻再试。
{% else %}
出现问题。我们的团队已收到通知。
{% endif %}
```
```