Skip to content

Error handling#

เวลาคุณออกแบบ flow logic ควรคิดถึงกรณี error และเตรียมวิธีรับมือไว้ด้วย ด้วย error workflow คุณสามารถควบคุมได้ว่า n8n จะทำอะไรเมื่อ workflow execution ล้มเหลว

Investigating errors

ถ้าต้องการตรวจสอบ execution ที่ล้มเหลว คุณสามารถ:

Create and set an error workflow#

แต่ละ workflow สามารถตั้ง error workflow ได้ใน Workflow Settings ถ้า execution ล้มเหลว error workflow จะถูกรัน เช่น คุณอาจตั้งให้ส่ง email หรือ Slack alert เมื่อ workflow error โดย error workflow ต้องเริ่มด้วย Error Trigger

คุณสามารถใช้ error workflow เดียวกับหลาย workflow ก็ได้

  1. สร้าง workflow ใหม่ โดยมี Error Trigger เป็น node แรก
  2. ตั้งชื่อ workflow ตัวอย่างเช่น Error Handler
  3. เลือก Save
  4. ใน workflow ที่คุณต้องการใช้ error workflow นี้:
    1. เลือก Options Options menu icon > Settings
    2. ใน Error workflow เลือก workflow ที่คุณเพิ่งสร้าง ตัวอย่างเช่น หากคุณใช้ชื่อ Error Handler ให้เลือก Error handler
    3. เลือก Save ตอนนี้ เมื่อ workflow นี้เกิด error, error workflow ที่เกี่ยวข้องจะทำงาน

Error data#

ข้อมูล error เริ่มต้นที่ 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": "Example Error Message",
				"stack": "Stacktrace"
			},
			"lastNodeExecuted": "Node With Error",
			"mode": "manual"
		},
		"workflow": {
			"id": "1",
			"name": "Example Workflow"
		}
	}
]

ข้อมูลทั้งหมดมีอยู่เสมอ ยกเว้น:

  • execution.id: ต้องการให้ execution ถูกบันทึกในฐานข้อมูล จะไม่มีอยู่หาก error เกิดขึ้นใน trigger node ของ workflow หลัก เนื่องจาก workflow ไม่ได้ execute
  • execution.url: ต้องการให้ execution ถูกบันทึกในฐานข้อมูล จะไม่มีอยู่หาก error เกิดขึ้นใน trigger node ของ workflow หลัก เนื่องจาก workflow ไม่ได้ execute
  • execution.retryOf: มีอยู่เฉพาะเมื่อ execution เป็นการ retry ของ execution ที่ล้มเหลว

หาก error เกิดจาก trigger node ของ workflow หลัก แทนที่จะเป็นขั้นตอนต่อมา ข้อมูลที่ส่งไปยัง error workflow จะแตกต่างกัน มีข้อมูลใน 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": ""
  }
}

Cause a workflow execution failure using Stop And Error#

เมื่อคุณสร้างและตั้ง error workflow แล้ว n8n จะรัน workflow นี้เมื่อ execution ล้มเหลว ปกติจะเกิดจาก error ใน node หรือ workflow ใช้ memory เกิน

คุณสามารถเพิ่ม Stop And Error node ใน workflow เพื่อบังคับให้ execution ล้มเหลวตามเงื่อนไขที่คุณกำหนด และ trigger error workflow