跳到主要内容

错误处理

设计流程逻辑时,建议考虑潜在错误,并设置妥善处理这些错误的方法。通过错误工作流,可以控制 n8n 在工作流执行失败时如何响应。

信息

排查错误

要排查失败的执行,可以:

如何设置错误工作流? ​

可以在每个工作流的 Workflow Settings(工作流设置) 中指定错误工作流。当执行失败时,错误工作流就会运行。例如,可以在工作流执行出错时发送电子邮件或 Slack 提醒。错误工作流必须以 Error Trigger 开始。

多个工作流可以共用同一个错误工作流。

  1. 创建新工作流,以 Error Trigger 作为第一个节点。
  2. 为工作流命名,例如 Error Handler。
  3. 选择 Save(保存)。
  4. 在要使用此错误工作流的工作流中:
    1. 选择 Options(选项) 选项菜单图标 > Settings(设置)。
    2. 在 Error workflow(错误工作流) 中,选择刚创建的工作流。例如,如果命名为 Error Handler,则选择 Error handler。
    3. 选择 Save(保存)。 现在,该工作流发生错误时,关联的错误工作流就会运行。

错误工作流会收到哪些数据? ​

Error Trigger 默认收到的错误数据如下:

[
{
"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": ""
}
}

如何使用 Stop and Error 节点主动让工作流失败? ​

创建并设置错误工作流后,n8n 会在执行失败时运行它。通常,执行失败是由节点设置错误或工作流内存不足等问题引起的。

可以向工作流添加 Stop And Error 节点,在指定条件下主动让执行失败,并触发错误工作流。

相关资源 ​

本文为社区中文翻译。查看对应英文原文