错误处理#
设计流程逻辑时,建议预先考虑潜在错误并设置优雅的处理方法。通过错误工作流,您可以控制n8n如何响应工作流执行失败的情况。
错误排查
要调查执行失败的情况,您可以:
- 查看单个工作流或您有权访问的所有工作流的执行记录,并支持将先前执行的数据加载到当前工作流中
- 启用日志流功能
创建并设置错误工作流#
对于每个工作流,您可以在工作流设置中配置错误工作流。当执行失败时,该工作流将自动运行。例如,您可以在工作流执行出错时发送邮件或Slack告警。错误工作流的首节点必须使用错误触发器。
同一错误工作流可被多个工作流复用。
- 创建以错误触发器为首节点的新工作流
- 命名工作流(例如"错误处理器")
- 点击保存
- 在需要启用错误处理的工作流中:
- 选择选项
> 设置 - 在错误工作流下拉列表中选择刚创建的工作流(如命名为错误处理器则选择错误处理器)
- 点击保存 此后当该工作流执行出错时,关联的错误工作流将自动运行
- 选择选项
错误数据#
错误触发器接收的默认错误数据包含:
[
{
"execution": {
"id": "231",
"url": "https://n8n.example.com/execution/231",
"retryOf": "34",
"error": {
"message": "Example Error Message",
"stack": "Stacktrace"
},
"lastNodeExecuted": "Node With Error",
"mode": "manual"
},
"workflow": {
"id": "1",
"name": "Example Workflow"
}
}
]
所有信息始终存在,但以下情况除外:
execution.id:需要执行记录已保存至数据库。若错误发生在主工作流的触发节点中则不显示,因为此时工作流尚未执行。execution.url:需要执行记录已保存至数据库。若错误发生在主工作流的触发节点中则不显示,因为此时工作流尚未执行。execution.retryOf:仅当当前执行是对失败执行进行重试时显示。
若错误发生在主工作流的触发节点(而非后续阶段),发送至错误工作流的数据将有所不同:execution{} 中的信息会减少,而 trigger{} 中的信息会更丰富:
{
"trigger": {
"error": {
"context": {},
"name": "WorkflowActivationError",
"cause": {
"message": "",
"stack": ""
},
"timestamp": 1654609328787,
"message": "",
"node": {
. . .
}
},
"mode": "trigger"
},
"workflow": {
"id": "",
"name": ""
}
}
使用停止与错误节点引发工作流执行失败#
当您创建并设置错误工作流后,n8n 会在执行失败时自动运行该工作流。此类失败通常由节点设置错误或工作流内存耗尽等问题引发。
您可以在工作流中添加停止与错误节点,根据预设条件强制使执行失败,从而触发错误工作流。