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

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


点击获取最新AI资讯、n8n工作流、开发经验分享

🎯 Stop And Error 节点是什么?

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

  • 主动触发错误:在满足特定条件时,强制工作流停止执行
  • 自定义错误信息:发送清晰、有意义的错误提示
  • 触发错误工作流:与 Error Trigger 节点配合,启动专门的错误处理流程
  • 数据验证:在数据进入关键步骤前进行检查和验证

核心优势

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

🔧 操作步骤详解

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

  1. 打开您的 n8n 工作流编辑器
  2. 点击工作流画布右侧的 “+” 按钮
  3. 在节点库中搜索 “Stop And Error”
  4. 点击该节点添加到工作流
快速查找技巧:
在节点搜索框中输入 "stop" 即可快速定位到 Stop And Error 节点

步骤2:配置错误类型

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

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

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

配置方法:

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

示例:

邮箱验证失败!请确保输入了有效的邮箱地址。用户ID: {{ $json.id }}
类型B:Error Object(错误对象模式)

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

配置方法:

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

示例:

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

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

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

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

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

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

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

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

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

工作流逻辑

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

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

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

  1. 在 n8n 首页点击 “+ New” 创建新工作流
  2. 点击工作流名称下方的 “…” → “Import from file”
  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. 点击右上角的 “Execute Workflow” 按钮
  2. 观察执行结果:
    • 用户1(张三):数据有效,继续处理
    • 用户2(李四):邮箱为空,触发 Stop And Error,工作流停止并显示错误

🔗 与错误工作流的配合

创建错误工作流

  1. 创建新工作流,命名为 “Error Handler”
  2. 添加 Error Trigger 节点作为第一个节点
  3. 添加通知节点(如 Slack、Email 等)
  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 的强大功能,让您的自动化流程更加智能。


官方文档
n8n系列教程

更多推荐