技能 error-handling-patterns
📦

error-handling-patterns

安全

實現穩健的錯誤處理模式

也可从以下获取: wshobson

透過掌握錯誤處理模式(包括異常、Result 類型、重試邏輯和斷路器)來建構更具韌性的應用程式,涵蓋 Python、TypeScript、Rust 和 Go。

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“error-handling-patterns”。 呼叫外部 API 時如何處理錯誤?

预期结果:

對於外部 API 呼叫,實現多層錯誤處理:(1) 自定義異常層次結構以處理不同失敗類型,(2) 對暫時性錯誤使用指數退機制重試,(3) 斷路器防止連鎖故障,(4) 帶有後備資料的優雅降級。範例方法:建立自定義異常(NetworkError、TimeoutError、RateLimitError),用重試裝飾器包裝 API 呼叫(3 次嘗試和指數退),使用斷路器追蹤失敗率,在 API 不可用時提供快取後備。

正在使用“error-handling-patterns”。 何時應該使用 Result 類型而不是異常?

预期结果:

對預期會失敗的情況使用 Result 類型(驗證錯誤、找不到錯誤、商業邏輯錯誤),此時呼叫者應該明確處理成功和失敗兩種情況。對真正的異常情況使用異常(空指標、記憶體不足、未預期的執行時錯誤)。Result 類型在類型系統中使錯誤處理變得明確,強制呼叫者考慮失敗情況。在 TypeScript 中,Result<T, E> = { ok: true, value: T } | { ok: false, error: E }。在 Rust 中,? 運算子和 Result<T, E> 類型提供內建支援。這種方法改善程式碼可讀性並減少未預期的執行時錯誤。

安全审计

安全
v1 • 2/24/2026

This skill is a documentation and educational resource about error handling patterns. The static scanner flagged 49 potential issues, but after evaluation all findings are FALSE POSITIVES. The detected patterns (backtick syntax examples, HTTP library examples, error categories) are educational code snippets in markdown documentation, not executable malicious code. No security concerns identified.

2
已扫描文件
674
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

提升應用程式可靠性

為新現功能添加穩健的錯誤處理,包含適當的異常層次結構和有意義的錯誤訊息。

建構容錯系統

為分散式系統和微服務實現重試邏輯、斷路器和優雅降級。

學習跨語言模式

了解 Python、TypeScript、Rust 和 Go 的錯誤處理方法,為每種情況選擇最佳方案。

试试这些提示

基本異常處理
幫我為從資料庫取得使用者資料的函式實現適當的錯誤處理。我想要建立自定義異常類別並適當處理不同的錯誤情境。
Result 類型實現
展示如何在 TypeScript 中實現 Result 類型模式來解析 JSON 資料。包含適當的錯誤類型和可串聯的錯誤處理。
帶退機制的重試
建立一個 Python 裝飾器,為網路呼叫實現具有指數退機制的重試邏輯。處理不同類型的異常並包含可設定的嘗試次數。
斷路器模式
在 Python 中實現斷路器模式,以防止呼叫外部 API 時產生連鎖故障。包含關閉、開啟和半開啟狀態。

最佳实践

  • 透過早期驗證輸入并提供有意義且包含背景資訊的錯誤訊息來快速失敗
  • 保留錯誤背景資訊,包括堆疊追蹤、時間戳和相關元資料
  • 在能夠有意義回應錯誤的適當層級處理錯誤
  • 適當記錄錯誤 - 記錄未預期的錯誤,而非預期的驗證失敗

避免

  • 使用過於寬鬆的通用 Exception 處理器,會隱藏錯誤
  • 空的 catch 區塊靜默吞沒錯誤而不記錄或處理
  • 返回錯誤碼而非使用適當的異常或 Result 類型
  • 因未適當處理 promise 拒絕而忽略異步錯誤

常见问题

異常和 Result 類型有什麼區別?
異常是使用 try-catch 區塊 disruptions 控制流程的傳統錯誤處理方式。Result 類型是明確的成功/失敗類型,要求呼叫者處理兩種情況。Result 類型使錯誤處理在類型系統中可見,在 Rust 和 Haskell 等函數式程式語言中很常見。
何時應該使用斷路器?
當呼叫可能變得不可用的外部服務或 API 時使用斷路器。它透過在服務當機時快速失敗來防止連鎖故障,而非用重複的失敗請求消耗資源。電路在關閉(正常)、開啟(失敗)和半開啟(測試恢復)狀態之間轉換。
指數退如何用於重試?
指數退增加重試嘗試之間的等待時間(例如 1 秒、2 秒、4 秒、8 秒)。這防止用重複請求壓垮故障服務,同時給予恢復時間。加入震盪(隨機變化)以防止驚群問題。
什麼是優雅降級?
優雅降級在錯誤發生時提供後備功能。例如,如果快取服務失敗,降級到資料庫。如果兩者都失敗,返回快取的過期資料。應用程式以降低的功能繼續運作而非完全失敗。
我應該捕捉異常還是讓它們傳播?
只在能夠有意義處理異常的地方捕捉異常。讓未預期的異常傳播到集中式錯誤處理器進行適當記錄。這防止用過於寬鬆的 catch 區塊隱藏錯誤,同時確保錯誤被適當記錄和報告。
如何建立有意義的錯誤訊息?
良好的錯誤訊息包含什麼失敗、為什麼失敗,以及採取什麼行動。包含相關背景資訊如使用者 ID、請求 ID 和時間戳。避免通用訊息如「發生錯誤」- 改用「為使用者 ID 123 取得使用者個人資料失敗:連線逾時 30 秒後」。