跳到主要内容

处理工作流中的错误#

有时您构建了一个完善的工作流,但在执行时却遭遇失败。工作流执行可能因多种原因失败,从节点配置错误或第三方服务故障等直接问题,到更难以捉摸的错误。

但无需惊慌。本节课程将指导您掌握错误排查方法,助您快速恢复工作流正常运行。

检查失败的工作流#

n8n会记录工作流的执行历史。

当工作流运行失败时,您可以通过执行日志查看具体错误。执行日志会显示已保存工作流的最新执行时间、状态、模式和运行时长列表。

通过左侧面板选择执行记录即可打开执行日志。

要查看列表中特定失败执行的详情,请点击执行名称或将鼠标悬停在该行时出现的查看按钮。

执行日志

执行日志

此时工作流将以只读模式打开,您可以查看每个节点的执行状态。这种可视化呈现有助于定位工作流出错的具体环节。

通过页面顶部的编辑器 | 执行记录按钮可切换执行视图与编辑视图。

工作流执行视图

工作流执行视图

捕获工作流错误#

要捕获失败的工作流,需使用错误触发节点创建独立的错误工作流。该工作流仅在主工作流执行失败时触发。

您可以在错误工作流中配置相关功能节点,例如通过邮件或Slack发送包含工作流错误详情的通知。

要接收失败工作流的错误信息,请在工作流设置中将错误工作流指定为包含错误触发节点的对应工作流。

常规工作流与错误工作流的唯一区别在于后者包含错误触发节点。请注意在设置为指定错误工作流前创建该节点。

错误工作流注意事项:

  • 包含错误触发节点的工作流无需激活即可生效
  • 默认情况下,包含错误触发节点的工作流会将自身作为错误工作流
  • 手动运行工作流时无法测试错误工作流,错误触发仅在全自动工作流报错时运行
  • 可为多个工作流设置相同的错误工作流

实践练习#

在前述章节中您已构建多个工作流,现在请选择需要监控的工作流并为其创建错误工作流:

  1. 创建新的错误工作流
  2. 添加错误触发节点
  3. 将通信平台节点(如SlackDiscordTelegram,或Gmail及通用型发送邮件节点)连接至错误触发节点
  4. 在需要监控的工作流中,打开工作流设置并选择新建的错误工作流(注意:仅自动运行的工作流才能触发错误工作流)

查看参考答案

本练习的参考工作流如下:

错误工作流

要查看节点配置详情,可复制下方JSON工作流代码并粘贴至编辑器界面:

{
"nodes": [
{
"parameters": {},
"name": "Error Trigger",
"type": "n8n-nodes-base.errorTrigger",
"typeVersion": 1,
"position": [
720,
-380
]
},
{
"parameters": {
"channel": "channelname",
"text": "=This workflow {{$node[\"Error Trigger\"].json[\"workflow\"][\"name\"]}}failed.\nHave a look at it here: {{$node[\"Error Trigger\"].json[\"execution\"][\"url\"]}}",
"attachments": [],
"otherOptions": {}
},
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
900,
-380
],
"typeVersion": 1,
"credentials": {
"slackApi": {
"id": "17",
"name": "slack_credentials"
}
}
}
],
"connections": {
"Error Trigger": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
}
}
}

在工作流中抛出异常#

另一种排查工作流问题的方法是使用停止与错误节点。该节点会抛出错误,您可指定以下错误类型:

  • 错误消息:返回自定义错误说明
  • 错误对象:返回错误类型

停止与错误节点仅可作为工作流的末端节点使用。

何时抛出异常

通过停止与错误节点抛出异常适用于以下场景:验证节点数据(或数据假设)并返回定制化错误信息。

当处理第三方服务数据时,您可能会遇到如下问题:

  • JSON格式输出错误
  • 数据类型错误(例如数值型数据包含非数字值)
  • 数据缺失
  • 远程服务器报错

虽然此类无效数据可能不会立即导致工作流失败,但后续可能引发问题,且难以追溯源头错误。因此建议在检测到潜在问题时立即抛出错误。

带错误信息的停止与错误节点

含错误信息的停止与错误节点