技能 error-handling-patterns
📦

error-handling-patterns

安全

实现健壮的错误处理模式

也可从以下获取: wshobson

通过掌握跨Python、TypeScript、Rust和Go的错误处理模式(包括异常、Result类型、重试逻辑和断路器)来构建更具弹性的应用程序。

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

下载技能 ZIP

2

在 Claude 中上传

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

3

开启并开始使用

测试它

正在使用“error-handling-patterns”。 How do I handle errors when calling an external API?

预期结果:

对于外部API调用,实施多层错误处理:(1) 针对不同失败类型的自定义异常层次结构,(2) 针对瞬态错误的指数退避重试,(3) 防止级联失败的断路器,(4) 具有降级数据的优雅降级。示例方法:创建自定义异常(NetworkError、TimeoutError、RateLimitError),使用3次尝试和指数退避将API调用包装在重试装饰器中,使用断路器跟踪失败率,在API不可用时提供缓存的降级数据。

正在使用“error-handling-patterns”。 When should I use Result types instead of exceptions?

预期结果:

对预期失败(验证错误、未找到错误、业务逻辑错误)使用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装饰器,为网络调用实现具有指数退避的重试逻辑。处理不同的异常类型并包含可配置的尝试次数。
断路器模式

最佳实践

  • 快速失败 - 尽早验证输入并提供具有上下文的有意义错误消息
  • 保留错误上下文,包括堆栈跟踪、时间戳和相关元数据
  • 在可以有意义地响应错误的适当级别处理错误
  • 适当记录错误 - 记录意外错误,不记录预期验证失败

避免

  • 使用过于宽泛的通用Exception处理器捕获错误,这会隐藏bug
  • 空的catch块静默吞下错误而不记录或处理
  • 返回错误代码而不是使用适当的异常或Result类型
  • 通过不正确处理promise拒绝来忽略异步错误

常见问题

异常和Result类型有什么区别?
异常是传统的错误处理方式,通过try-catch块中断控制流。Result类型是显式的成功/失败类型,要求调用者处理两种情况。Result类型使错误处理在类型系统中可见,常见于Rust和Haskell等函数式编程语言。
什么时候应该使用断路器?
在调用可能变得不可用的外部服务或API时使用断路器。它通过在服务宕机时快速失败来防止级联故障,而不是用重复的失败请求占用资源。电路在关闭(正常)、打开(失败)和半开(测试恢复)状态之间切换。
重试的指数退避是如何工作的?
指数退避会增加重试尝试之间的等待时间(例如1秒、2秒、4秒、8秒)。这可以防止用重复请求压垮失败服务,同时仍给它时间恢复。添加抖动(随机变化)以防止雷鸣般的大量请求问题。
什么是优雅降级?
优雅降级在发生错误时提供降级功能。例如,如果缓存服务失败,则回退到数据库。如果两者都失败,则返回过期的缓存数据。应用程序继续以降低的功能运行,而不是完全失败。
我应该捕获异常还是让它们传播?
只在可以有意义地处理异常的地方捕获异常。让意外异常传播到集中式错误处理器中适当记录它们。这可以防止用过于宽泛的catch块隐藏bug,同时确保错误被正确记录和报告。
如何创建有意义的错误消息?
好的错误消息包括什么失败、为什么失败以及要采取什么操作。包含相关上下文,如用户ID、请求ID和时间戳。避免通用消息如"发生错误" - 而是说"获取用户ID 123的用户配置文件失败:30秒后连接超时"。