N8N中文教程
使用 n8n/Key_concepts/Flow_logic

错误处理#

在设计流程逻辑时,考虑潜在的错误并设置优雅的处理方式是一种良好的实践。通过错误工作流(error workflow),你可以控制 n8n 在工作流执行失败时的响应行为。

查看错误

要调查执行失败的原因,你可以:

  • 查看你的 执行记录(Executions),可以是 单个工作流的执行记录 或 你有权访问的所有工作流的执行记录。你还可以将 前一次执行的数据加载到当前工作流中 进行调试。
  • 启用 日志流(Log streaming) 功能。

创建并设置错误工作流#

对于每个工作流,你可以在 工作流设置(Workflow Settings) 中指定一个错误工作流。当执行失败时,该工作流将被触发运行。这意味着你可以例如在工作流执行出错时发送邮件或 Slack 告警通知。错误工作流必须以 错误触发器(Error Trigger) 节点作为起点。 你可以为多个工作流使用同一个错误工作流。

  1. 创建一个新的工作流,并将 Error Trigger 设为第一个节点。
  2. 给这个工作流命名,例如 Error Handler(错误处理器)。
  3. 点击 保存(Save)
  4. 在你想应用此错误工作流的工作流中:
  5. 点击 选项(Options) !Options menu icon > 设置(Settings)
  6. 错误工作流(Error workflow) 字段中,选择你刚刚创建的工作流。例如,如果你命名为 Error Handler,则选择 Error handler
  7. 点击 保存(Save)。现在,当该工作流发生错误时,关联的错误工作流就会自动运行。

错误数据#

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19

| ``` [ { "execution":{ "id":"231", "url":"https://n8n.example.com/execution/231", "retryOf":"34", "error":{ "message":"示例错误信息", "stack":"堆栈跟踪" }, "lastNodeExecuted":"出错的节点", "mode":"manual" }, "workflow":{ "id":"1", "name":"示例工作流" } } ]


---|---
以下字段始终存在,除非特别说明:
  * `execution.id`:要求执行记录已保存至数据库。如果主工作流的触发器节点发生错误,则不会生成执行记录,因此该字段不存在。
  * `execution.url`:同样需要执行记录已保存至数据库。若错误发生在主工作流的触发器节点,则该字段也不存在。
  * `execution.retryOf`:仅当本次执行是失败执行的重试时才存在。

如果错误是由主工作流的触发节点引起的,而不是后续阶段导致的,那么发送到错误工作流的数据会有所不同。此时 `execution{}` 中的信息较少,而 `trigger{}` 中的信息较多:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

| ```
{
"trigger":{
"error":{
"context":{},
"name":"WorkflowActivationError",
"cause":{
"message":"",
"stack":""
},
"timestamp":1654609328787,
"message":"",
"node":{
...}
},
"mode":"trigger"
},
"workflow":{
"id":"",
"name":""
}
}

---|---

使用“停止并报错”节点引发工作流执行失败#

当你创建并设置了错误处理工作流后,当执行失败时,n8n 将运行该错误工作流。通常,这种情况是由于节点配置错误或工作流内存耗尽等原因引起的。 你可以在工作流中添加 Stop And Error 节点,以在自定义条件下强制执行失败,从而触发错误工作流。