n8n 錯誤處理與重試機制:打造穩定不掛的自動化流程
工作流跑到一半掛掉怎麼辦?這篇教你用 Error Trigger、Try/Catch、重試機制,讓 n8n 自動化流程穩穩跑不中斷。附實戰範例和錯誤通知設定。
n8n 錯誤處理與重試機制:打造穩定不掛的自動化流程
工作流跑起來很開心,直到某天它掛了,你才發現過去三天的資料都沒處理。這篇教你怎麼讓 n8n 工作流「掛了會自動重試」「掛了會通知你」「掛了不會影響其他資料」。
為什麼工作流會掛?
先搞清楚常見的掛點:
| 原因 | 頻率 | 範例 |
|---|---|---|
| API 暫時無回應 | 很常見 | 呼叫 OpenAI API,對方伺服器忙碌回 429 |
| 認證過期 | 偶爾 | Google OAuth Token 過期(OAuth 設定教學) |
| 資料格式不對 | 常見 | 預期收到 JSON,結果收到 HTML 錯誤頁 |
| 速率限制 | 常見 | API 每分鐘只能呼叫 60 次,你超過了 |
| 伺服器問題 | 少見 | VPS 記憶體滿了、硬碟滿了 |
| 節點設定錯誤 | 偶爾 | Expression 寫錯、欄位名稱打錯(常見錯誤 Top 10) |
掛一次不可怕,可怕的是掛了你不知道,資料就這樣消失了。
方法一:Error Trigger 節點 — 掛了自動通知
Error Trigger 是 n8n 的「保險機制」。當你的主工作流掛了,它會自動觸發另一個工作流來處理善後。
設定步驟
Step 1:建立錯誤處理工作流
- 新建一個工作流,命名為「Error Handler」
- 加入 Error Trigger 節點當起點
- 後面接你想要的通知方式(Email、Slack、LINE 都行)
Step 2:接上通知節點
Error Trigger 會傳出這些資訊:
{
"execution": {
"id": "12345",
"url": "https://your-n8n.com/execution/12345",
"error": {
"message": "The API returned a 429 status code"
}
},
"workflow": {
"id": "1",
"name": "訂單處理工作流"
}
}
你可以用這些資訊組出通知訊息,例如:
⚠️ 工作流「訂單處理工作流」掛了! 錯誤:The API returned a 429 status code 查看詳情:https://your-n8n.com/execution/12345
Step 3:在主工作流指定錯誤處理工作流
- 打開你的主工作流
- 點右上角的齒輪(Settings)
- 在「Error workflow」欄位選擇剛才建立的「Error Handler」
- 儲存
這樣主工作流掛了,Error Handler 就會自動跑起來通知你。
通知管道建議
| 管道 | 適合場景 | 設定難度 |
|---|---|---|
| Email(Gmail) | 一般通知 | 低(需要 Google OAuth) |
| Slack | 團隊協作 | 低 |
| LINE Notify | 台灣常用 | 低 |
| Telegram | 個人通知 | 低 |
方法二:節點層級的錯誤處理 — On Error 設定
每個節點都有「On Error」設定,讓你決定這個節點掛了要怎麼處理。
三種選項
1. Stop Workflow(預設)
節點掛了,整個工作流停下來。適合不能出錯的關鍵步驟。
2. Continue on Fail
節點掛了,跳過這筆資料,繼續處理下一筆。適合處理大量資料時,不想因為一筆壞資料卡住整個流程。
設定方式:點節點 → Settings → 把「Continue On Fail」打開。
掛掉的那筆資料會多一個 error 欄位,你可以在後面的節點用 Expression 判斷:
{{ $json.error ? "這筆有錯" : "正常" }}
3. Continue Using Error Output
這是比較新的功能。節點掛了,資料會走「error output」那條線,你可以另外處理。這就是 n8n 版本的 Try/Catch。
方法三:Try/Catch 設計模式
想要更精細的錯誤處理,可以用 Try/Catch 的概念來設計工作流。
做法
- 把可能會掛的節點設定為「Continue Using Error Output」
- 正常的資料走「success」那條線 → 繼續後面的流程
- 錯誤的資料走「error」那條線 → 做特別處理
[HTTP Request] ─── success ──→ [處理資料] → [存入資料庫]
│
└── error ──→ [記錄錯誤] → [通知管理員]
什麼時候用 Try/Catch?
- 呼叫外部 API(對方可能會掛)
- 處理使用者輸入的資料(格式可能不對)
- 任何「有可能失敗,但失敗不該影響其他資料」的步驟
方法四:重試機制設定
有些錯誤是「暫時的」— API 伺服器忙碌、網路瞬斷。這種情況重試一次可能就好了。
節點內建重試
大部分節點都有「Retry On Fail」選項:
- 點節點 → Settings
- 打開「Retry On Fail」
- 設定:
- Max Tries:最多重試幾次(建議 3 次)
- Wait Between Tries:每次重試間隔多久(建議 1000-5000 毫秒)
進階:指數退避(Exponential Backoff)
如果你遇到 API 速率限制(429 錯誤),固定間隔重試可能會一直被擋。比較聰明的做法是「指數退避」— 每次重試等更久:
- 第 1 次重試:等 1 秒
- 第 2 次重試:等 2 秒
- 第 3 次重試:等 4 秒
n8n 內建的重試不支援指數退避,但你可以用 Loop + Wait 節點自己做:
[HTTP Request] → 成功?
├── 是 → [繼續處理]
└── 否 → [Wait 節點(等待時間用 Expression 算)] → [回到 HTTP Request]
Wait 時間的 Expression:
{{ Math.pow(2, $runIndex) * 1000 }}
這樣第一次等 1 秒、第二次等 2 秒、第三次等 4 秒。
實戰:穩定的 API 呼叫工作流
把前面的技巧組合起來,做一個「不容易掛」的 API 呼叫工作流。
場景
每小時從外部 API 抓資料,存進 Google Sheets。
工作流架構
[Cron Trigger(每小時)]
│
▼
[HTTP Request] ─ Retry On Fail: 3 次
│
├── success → [處理資料] → [Google Sheets 寫入]
│ │
│ └── error → [記錄失敗行] → [Email 通知]
│
└── error → [判斷錯誤類型]
│
├── 429 / 503 → [Wait 30 秒] → [重試]
└── 其他 → [記錄錯誤] → [Email 通知]
關鍵設定
-
HTTP Request 節點:
- Retry On Fail:打開
- Max Tries:3
- Wait Between Tries:2000ms
- On Error:Continue Using Error Output
-
判斷錯誤類型(IF 節點):
- 條件:
{{ $json.error.message.includes("429") || $json.error.message.includes("503") }}
- 條件:
-
錯誤通知:
- 用 Gmail 或 LINE Notify 通知自己
錯誤通知範本
Email 通知範本
主旨:[n8n 錯誤] {{ $json.workflow.name }} 執行失敗
內容:
工作流名稱:{{ $json.workflow.name }}
錯誤訊息:{{ $json.execution.error.message }}
執行時間:{{ $now.toISO() }}
查看詳情:{{ $json.execution.url }}
請盡快檢查!
LINE Notify 範本
⚠️ n8n 工作流掛了
名稱:{{ $json.workflow.name }}
錯誤:{{ $json.execution.error.message }}
時間:{{ $now.format('YYYY-MM-DD HH:mm') }}
錯誤處理的設計原則
- 每個重要工作流都要設 Error Trigger — 就算你覺得它不會掛
- 大量資料處理用 Continue on Fail — 不要因為一筆壞資料卡住全部
- API 呼叫都開重試 — 網路抖動很正常,重試一次通常就好
- 區分暫時性 vs 永久性錯誤 — 429 可以重試,401 要去換 Token
- 定期檢查錯誤日誌 — 不要設了通知就不看
總結
| 技巧 | 用途 | 設定難度 |
|---|---|---|
| Error Trigger | 工作流掛了自動通知 | 低 |
| Continue on Fail | 跳過壞資料繼續跑 | 低 |
| Try/Catch(Error Output) | 精細處理不同錯誤 | 中 |
| Retry On Fail | 暫時性錯誤自動重試 | 低 |
| 指數退避 | 處理 API 速率限制 | 中 |
先從 Error Trigger 通知開始設,至少工作流掛了你會知道。其他的再慢慢加。
想拿現成的錯誤處理模板?本週限量包裡有完整的錯誤處理工作流模板 >> n8nstart.cc/weekly
延伸閱讀
外部參考: