跳至内容

处理工作流中的错误#

有时你构建了一个不错的工作流,但在尝试执行时却失败了。工作流执行失败的原因多种多样,从节点配置错误或第三方服务故障等直接问题,到更神秘的错误都有可能。

但别担心。在本课程中,您将学习如何排查错误,以便尽快让工作流重新运行。

检查失败的工作流#

n8n 跟踪您工作流的执行情况。

当您的工作流失败时,可以检查执行日志查看问题所在。执行日志会显示已保存工作流的最新执行时间、状态、模式和运行时间列表。

通过选择左侧面板中的Executions来打开执行日志。

要调查列表中某个特定的失败执行,请选择名称或当您悬停在相应执行行上时出现的查看按钮。

Executions log
Executions log

这将以只读模式打开工作流,您可以查看每个节点的执行情况。此视图可帮助您识别工作流在哪个环节出现问题。

要在查看执行记录和编辑器之间切换,请选择页面顶部的编辑器 | 执行记录按钮。

Workflow execution view
Workflow execution view

捕获出错的工作流#

要捕获失败的工作流,请使用错误触发节点创建一个单独的错误工作流。该工作流仅在主工作流执行失败时才会运行。

在您的错误工作流中使用其他有意义的节点,例如通过电子邮件或Slack发送有关失败工作流及其错误的通知。

要接收失败工作流的错误消息,请在工作流设置中将错误工作流设置为使用错误触发节点的错误工作流。

常规工作流与错误工作流的唯一区别在于后者包含一个错误触发节点。请确保在将其设为其他工作流的指定错误工作流之前先创建此节点。

错误工作流

  • 如果工作流使用了错误触发节点,您无需手动激活该工作流。
  • 如果工作流包含错误触发节点,默认情况下,该工作流会将自身作为错误工作流使用。
  • 手动运行工作流时无法测试错误工作流。错误触发器仅在自动工作流出错时运行。
  • 您可以为多个工作流设置相同的错误处理工作流。

练习#

在前面的章节中,你已经构建了几个小型工作流。现在,请选择其中一个你想监控的工作流,并为其创建一个错误工作流:

  1. 创建一个新的错误工作流。
  2. 添加Error Trigger节点
  3. 将您选择的通信平台节点连接到错误触发器节点,例如SlackDiscordTelegram,甚至是Gmail或更通用的Send Email
  4. 在您想要监控的工作流中,打开工作流设置并选择您刚创建的新错误工作流。请注意,此工作流需要自动运行才能触发错误工作流。
Show me the solution

本练习的工作流程如下所示:

错误工作流

要检查节点的配置,您可以复制下面的JSON工作流代码并粘贴到您的编辑器界面中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
	"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 格式输出错误
  • 数据类型错误的数据(例如,包含非数值的数值数据)
  • 缺失值
  • 来自远程服务器的错误

虽然这类无效数据可能不会立即导致工作流失败,但它可能会在后期引发问题,届时追踪源头错误将变得困难。这就是为什么在发现问题苗头时就抛出错误更为可取。

Stop and Error node with error message
Stop and Error node with error message
优云智算