【n8n教程】:Stop And Error节点,搭建智能错误处理机制

在自动化工作流中,错误处理是确保流程稳定可靠的关键。n8n 的 Stop And Error 节点为您提供了强大的工具,能够在特定条件下主动中断工作流执行,并通过自定义错误消息传递关键信息。本教程将帮助初学者快速掌握这个核心节点的使用方法。


🎯 Stop And Error 节点是什么?

Stop And Error 节点是 n8n 中的一个流程控制节点,用于:

核心优势

功能特性说明
条件触发根据业务逻辑主动抛出错误
灵活消息支持动态消息和表达式注入
错误追踪自动记录错误信息便于调试
工作流联动与 Error Trigger 无缝配合

🔧 操作步骤详解

步骤1:在工作流中添加 Stop And Error 节点

  1. 1. 打开您的 n8n 工作流编辑器
  2. 2. 点击工作流画布右侧的 "+" 按钮
  3. 3. 在节点库中搜索 "Stop And Error"
  4. 4. 点击该节点添加到工作流

    
    
    
  快速查找技巧:
在节点搜索框中输入 "stop" 即可快速定位到 Stop And Error 节点

步骤2:配置错误类型

Stop And Error 节点提供两种错误类型

类型A:Error Message(错误消息模式)

适用场景:需要发送简单、易读的错误信息

配置方法

  1. 1. 在节点参数中,选择 Error TypeError Message
  2. 2. 在 Error Message 字段中输入错误文本
  3. 3. 支持使用表达式动态注入数据

示例


    
    
    
  邮箱验证失败!请确保输入了有效的邮箱地址。用户ID: {{ $json.id }}

类型B:Error Object(错误对象模式)

适用场景:需要传递结构化的错误信息到错误工作流

配置方法

  1. 1. 在节点参数中,选择 Error TypeError Object
  2. 2. 在 Error Object 字段中输入 JSON 格式的错误对象
  3. 3. 该对象将被传递到错误工作流中

示例


    
    
    
  {
  "errorCode"
: "INVALID_EMAIL",
  "message"
: "邮箱格式不正确",
  "userId"
: "{{ $json.id }}",
  "timestamp"
: "{{ new Date().toISOString() }}",
  "retryable"
: false
}

步骤3:连接条件判断节点

Stop And Error 节点通常配合 If 节点使用:

  1. 1. 在 Stop And Error 节点的前面添加 If 节点(条件判断)
  2. 2. 设置条件逻辑(如:email 字段为空)
  3. 3. 将 If 节点的错误分支(false 输出)连接到 Stop And Error 节点
  4. 4. 将正确分支(true 输出)连接到后续处理节点

步骤4:配置错误工作流(可选但推荐)

为了让错误被捕获并处理:

  1. 1. 打开当前工作流的 Settings(设置)
  2. 2. 在 Error workflow 下拉菜单中选择或创建错误工作流
  3. 3. 确保错误工作流以 Error Trigger 节点开始

💡 实用示例:数据验证工作流

以下是一个完整的可执行工作流,展示如何使用 Stop And Error 节点进行用户数据验证:

工作流逻辑


    
    
    
  Start 
  ↓
获取用户数据
  ↓
检查邮箱字段
  ├─ 如果为空 → Stop And Error(邮箱不能为空)
  ├─ 如果有效 → 检查年龄字段
     ├─ 如果小于0 → Stop And Error(年龄不能为负数)
     ├─ 如果有效 → 数据验证成功,继续处理

完整工作流代码(JSON 格式)

将以下 JSON 代码复制到您的 n8n 中:

  1. 1. 在 n8n 首页点击 "+ New" 创建新工作流
  2. 2. 点击工作流名称下方的 "...""Import from file"
  3. 3. 将以下 JSON 粘贴并导入

    
    
    
  {
  "name"
: "Data Validation with Stop And Error",
  "nodes"
: [
    {

      "parameters"
: {},
      "name"
: "Start",
      "type"
: "n8n-nodes-base.start",
      "typeVersion"
: 1,
      "position"
: [250, 300]
    }
,
    {

      "parameters"
: {
        "functionCode"
: "// 模拟获取用户数据\nreturn [\n  {\n    \"json\": {\n      \"id\": 1,\n      \"name\": \"张三\",\n      \"email\": \"zhangsan@example.com\",\n      \"age\": 25\n    }\n  },\n  {\n    \"json\": {\n      \"id\": 2,\n      \"name\": \"李四\",\n      \"email\": \"\",\n      \"age\": -5\n    }\n  }\n];"
      }
,
      "name"
: "Get User Data",
      "type"
: "n8n-nodes-base.function",
      "typeVersion"
: 1,
      "position"
: [450, 300]
    }
,
    {

      "parameters"
: {
        "conditions"
: {
          "boolean"
: [
            {

              "value1"
: "{{ $json.email }}",
              "condition"
: "isEmpty"
            }

          ]

        }

      }
,
      "name"
: "Check Email",
      "type"
: "n8n-nodes-base.if",
      "typeVersion"
: 1,
      "position"
: [650, 300]
    }
,
    {

      "parameters"
: {
        "errorType"
: "errorMessage",
        "errorMessage"
: "邮箱不能为空!用户ID: {{ $json.id }},用户名: {{ $json.name }}"
      }
,
      "name"
: "Stop - Invalid Email",
      "type"
: "n8n-nodes-base.stopanderror",
      "typeVersion"
: 1,
      "position"
: [850, 200]
    }
,
    {

      "parameters"
: {
        "conditions"
: {
          "boolean"
: [
            {

              "value1"
: "{{ $json.age }}",
              "condition"
: "lessThan",
              "value2"
: "0"
            }

          ]

        }

      }
,
      "name"
: "Check Age",
      "type"
: "n8n-nodes-base.if",
      "typeVersion"
: 1,
      "position"
: [850, 400]
    }
,
    {

      "parameters"
: {
        "errorType"
: "errorMessage",
        "errorMessage"
: "年龄不能为负数!用户ID: {{ $json.id }},年龄: {{ $json.age }}"
      }
,
      "name"
: "Stop - Invalid Age",
      "type"
: "n8n-nodes-base.stopanderror",
      "typeVersion"
: 1,
      "position"
: [1050, 400]
    }
,
    {

      "parameters"
: {
        "functionCode"
: "// 数据验证成功,返回处理结果\nreturn [\n  {\n    \"json\": {\n      \"status\": \"success\",\n      \"message\": \"数据验证通过\",\n      \"user_id\": $json.id,\n      \"user_name\": $json.name,\n      \"email\": $json.email,\n      \"age\": $json.age,\n      \"timestamp\": new Date().toISOString()\n    }\n  }\n];"
      }
,
      "name"
: "Data Valid - Process",
      "type"
: "n8n-nodes-base.function",
      "typeVersion"
: 1,
      "position"
: [1050, 500]
    }

  ]
,
  "connections"
: {
    "Start"
: {
      "main"
: [
        [

          {

            "node"
: "Get User Data",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "Get User Data"
: {
      "main"
: [
        [

          {

            "node"
: "Check Email",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "Check Email"
: {
      "main"
: [
        [

          {

            "node"
: "Check Age",
            "type"
: "main",
            "index"
: 0
          }

        ]
,
        [

          {

            "node"
: "Stop - Invalid Email",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "Check Age"
: {
      "main"
: [
        [

          {

            "node"
: "Data Valid - Process",
            "type"
: "main",
            "index"
: 0
          }

        ]
,
        [

          {

            "node"
: "Stop - Invalid Age",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }

  }

}

运行工作流

  1. 1. 点击右上角的 "Execute Workflow" 按钮
  2. 2. 观察执行结果:
    • 用户1(张三):数据有效,继续处理
    • 用户2(李四):邮箱为空,触发 Stop And Error,工作流停止并显示错误

🔗 与错误工作流的配合

创建错误工作流

  1. 1. 创建新工作流,命名为 "Error Handler"
  2. 2. 添加 Error Trigger 节点作为第一个节点
  3. 3. 添加通知节点(如 Slack、Email 等)
  4. 4. 在主工作流设置中链接此错误工作流

在错误工作流中获取错误信息


    
    
    
  // 在错误工作流中,可以使用以下表达式获取错误详情
{{ $node["Error Trigger"].json.workflow.name }}  // 原工作流名称
{{ $node["Error Trigger"].json.workflow.id }}    // 原工作流ID
{{ $node["Error Trigger"].json.error.message }}  // 错误消息
{{ $node["Error Trigger"].json.execution.id }}   // 执行ID

⚠️ 常见问题与解决方案

问题解决方案
Stop And Error 节点没有触发检查条件判断是否正确连接,确保数据流指向该节点
错误消息中的表达式没有生效确保使用正确的表达式语法:{{ $json.fieldName }}
错误工作流没有被触发检查错误工作流是否以 Error Trigger 开始,且已在主工作流设置中配置
Error Object 无法解析确保 JSON 格式有效,使用在线 JSON 验证工具检查语法

💻 高级用法提示

1. 动态错误消息


    
    
    
  根据不同条件生成不同的错误信息:
{{ $json.fieldType === 'email' ? '邮箱格式错误' : '字段验证失败' }}

2. 错误对象中包含上下文数据


    
    
    
  {
  "errorCode"
: "VALIDATION_FAILED",
  "failedField"
: "{{ $json.fieldName }}",
  "receivedValue"
: "{{ $json.fieldValue }}",
  "expectedFormat"
: "{{ $json.expectedFormat }}",
  "timestamp"
: "{{ new Date().toISOString() }}"
}

3. 多层级条件验证


    
    
    
  使用多个 If 节点和 Stop And Error 节点实现阶梯式验证
每个验证失败都有独立的错误消息,便于问题追踪

✅ 总结

通过本教程,您已经学会了:

✓ Stop And Error 节点的基本概念和用途
✓ 两种错误类型的配置方法(Error Message 和 Error Object)
✓ 与 If 节点配合进行条件验证
✓ 搭建完整的数据验证工作流
✓ 与错误工作流的集成

现在您可以创建更加健壮和可靠的 n8n 工作流了!继续探索 n8n 的强大功能,让您的自动化流程更加智能。


官方文档[1]
n8n系列教程[2]

引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#