错误处理
在设计流程逻辑时,最佳实践是充分考虑可能发生的错误,并设置优雅的处理方式。通过配置错误工作流,你可以控制 n8n 在工作流执行失败时的响应方式。
排查错误
要排查失败的执行,可以:
- 查看你的执行记录,包括单个工作流的记录或所有你有权访问的工作流的记录。你还可以将上次执行的数据加载到当前工作流中。
- 启用日志流。
创建并设置错误工作流
对于每个工作流,你可以在 工作流设置 中配置一个错误工作流,它会在执行失败时自动运行。这意味着你可以在工作流出错时发送邮件或 Slack 告警等通知。错误工作流必须以 Error Trigger 节点作为起始。
你可以让多个工作流共用同一个错误工作流。
- 创建一个新工作流,将 Error Trigger 节点作为第一个节点。
- 为工作流命名,例如
Error Handler(错误处理器)。 - 点击 保存。
- 在你想使用此错误工作流的目标工作流中:
- 点击 选项
> 设置。 - 在 错误工作流 中,选择你刚刚创建的工作流(例如 Error handler)。
- 点击 保存。此后,当此工作流出错时,关联的错误工作流将自动运行。
- 点击 选项
错误数据
Error Trigger 接收到的默认错误数据如下:
[
{
"execution": {
"id": "...",
"url": "...",
"retryOf": null,
"error": {
"name": "NodeOperationError",
"message": "",
"cause": {},
"node": {}
},
"lastNodeExecuted": "Node With Error",
"mode": "manual"
},
"workflow": {}
}
]
以下字段并非总是存在:
execution.id:需要将执行保存到数据库。如果错误发生在主工作流的触发节点,由于工作流未能启动执行,该字段不存在。execution.url:需要将执行保存到数据库。如果错误发生在主工作流的触发节点,该字段不存在。execution.retryOf:仅在当前执行是对失败执行的重试时存在。
如果错误源自主工作流的触发节点(而非后续阶段),则发送给错误工作流的数据结构有所不同,execution 字段包含的信息更少,而 trigger 字段信息更多:
{
"trigger": {
"error": {
"name": "WorkflowActivationError",
"cause": {},
"timestamp": 1654609328787,
"message": "",
"node": {}
},
"mode": "trigger"
},
"workflow": {}
}
使用 Stop And Error 节点强制工作流执行失败
当你创建并设置了错误工作流后,n8n 会在执行失败时运行它,这通常是由于节点设置错误或工作流内存耗尽等原因引起的。
你也可以在工作流中添加 Stop And Error 节点,在你指定的条件下强制执行失败,从而触发错误工作流。