SuperAPI AI 工具集

error-handling

编程与开发

查看项目

更新于 10-15 07:47

技能介绍

用途

该技能围绕错误处理模式、策略与实现展开,适用于构建健壮、容错的软件系统。当用户提出“处理错误”“添加错误处理”“创建自定义错误”等需求时可使用。

错误处理哲学

  • 快速失败:尽早发现问题并立即报告,不让无效状态在系统中传播。包括在系统边界验证输入、在开发阶段用断言检查不变量、对不可能的状态抛出异常而非返回默认值、优先使用编译期检查而非运行时检查。
  • 优雅降级:当失败不可避免时,降级功能而非让整个系统崩溃。包括提供回退值或缓存响应、在压力下智能卸载负载、向调用方清晰传达错误、尽可能保留功能。

操作型错误与程序型错误

两类错误在成因、可预测性、处理方式、示例与恢复方式上均有区别:

  • 操作型错误:由运行环境条件(网络、磁盘)引起,可预测,处理方式为重试、回退、告警,例如超时、DNS 失败、磁盘满,通过自动化或人工干预恢复。
  • 程序型错误:由代码缺陷(空引用、错误逻辑)引起,不可预测,处理方式是修复代码,例如 TypeError、差一错误、空指针解引用,通过部署修复恢复。

主要能力与示例

该技能给出多语言与框架的具体实现模式:

  • JavaScript / TypeScript:基础 try/catch、async/await 错误处理、使用 Promise.allSettled 处理并发操作、自定义错误类(如 AppError、NotFoundError、ValidationError、ConflictError)、Node.js 全局错误处理器(unhandledRejection、uncaughtException、优雅关闭)。
  • Python:try/except/else/finally、自定义异常层级(AppError、NotFoundError、ValidationError、RateLimitError)、用于错误处理的上下文管理器。
  • Go:错误接口与包装(AppError 结构体、哨兵错误、Wrap)、errors.Is 与 errors.As 的使用。
  • Java:受检异常与非受检异常、try-with-resources。
  • Rust:Result、Option 与 ? 运算符,使用 thiserror 定义 AppError 枚举,使用 anyhow 处理应用代码。
  • React:错误边界(ErrorBoundary)组件。
  • Express / Koa:错误中间件,包括异步处理器包装与集中式错误处理。

使用方式

该技能以模式与实践说明的形式提供,包含各语言和框架的代码示例,供开发者在实现错误处理时参考与套用。资料未提供具体的安装命令或调用步骤。

适用场景

适用于需要为项目添加、规范或重构错误处理逻辑的场景,尤其是跨多种语言和框架、需要区分操作型与程序型错误、需要设计统一错误结构与全局处理机制的项目。

限制

资料未提供该技能的安装方式、运行环境要求、平台支持范围、收费或价格信息,以及具体的效果或性能指标,这些内容暂未提供。