Skip to content

处理工作流中的错误#

有时您构建了一个不错的工作流,但在尝试执行时失败了。工作流执行可能因各种原因失败,从节点配置不正确或第三方服务故障等简单问题到更神秘的错误。

但不要惊慌。在本课程中,您将学习如何排除错误,以便尽快让您的工作流启动并运行。

检查失败的工作流#

n8n 跟踪您工作流的执行。

当您的工作流之一失败时,您可以检查执行日志以查看出了什么问题。执行日志显示您保存的工作流的最新执行时间、状态、模式和运行时间列表。

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

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

执行日志
执行日志

这将以只读模式打开工作流,您可以在其中查看每个节点的执行。这种表示可以帮助您识别工作流在哪个点遇到问题。

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

工作流执行视图
工作流执行视图

捕获出错的工作流#

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

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

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

常规工作流和错误工作流之间的唯一区别是后者包含错误触发节点。确保在将其设置为另一个工作流的指定错误工作流之前创建此节点。

错误工作流

  • 如果工作流使用错误触发节点,您不必激活工作流。
  • 如果工作流包含错误触发节点,默认情况下,工作流将自己用作错误工作流。
  • 手动运行工作流时无法测试错误工作流。错误触发器只有在自动工作流出错时才会运行。
  • 您可以为多个工作流设置相同的错误工作流。

练习#

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

  1. 创建新的错误工作流。
  2. 添加错误触发节点
  3. 将您选择的通信平台的节点连接到错误触发节点,如 SlackDiscordTelegram,甚至 Gmail 或更通用的发送电子邮件
  4. 在您想要监控的工作流中,打开工作流设置并选择您刚创建的新错误工作流。请注意,此工作流需要自动运行以触发错误工作流。
显示解决方案

此练习的工作流如下所示:

错误工作流

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

 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 输出
  • 错误类型的数据(例如,具有非数字值的数字数据)
  • 缺失值
  • 远程服务器错误

虽然这种无效数据可能不会立即导致工作流失败,但它可能会在以后引起问题,然后很难跟踪源错误。这就是为什么在您知道可能有问题时抛出错误更好的原因。

带有错误消息的停止和错误节点
带有错误消息的停止和错误节点