SuperAPI AI 工具集

fail-fast

编程与开发

查看项目

更新于 10-16 02:20

技能介绍

用途

Fail Fast 是一套面向错误处理的编码技能,用于指导开发者何时以及如何让程序在出错时立即、显式地失败。它的核心场景包括:编写错误处理代码、想要捕获并吞掉异常、以及想通过返回默认值来掩盖失败。技能的目标是避免隐藏错误、避免无效状态传播,让失败发生在出错点,而不是在几层之后以损坏数据的形式出现。

主要能力

该技能提供了一套完整的错误处理原则与操作指南:

  • 核心铁律:绝不隐藏失败,要大声失败、尽早失败。明确排除“应用不应崩溃”“返回点什么而不是抛出”“优雅处理错误”“防御式编程”等借口。
  • 检测“吞掉异常”坏味道:识别静默消失的错误,例如在 catch 中返回 { success: false, error: 'Internal error' } 这类做法,并指出其问题:调用方不知道具体哪里失败、堆栈跟踪丢失、bug 被伪装成“内部错误”、对真实失败缺乏可见性。
  • 正确的失败模式:在失败点抛出异常,让错误向上传播。示例中展示了在输入校验阶段就抛出 ValidationError,在用户不存在时抛出 NotFoundError,在卡片校验失败时抛出 PaymentError,并让调用方在边界处按错误类型返回合适的 HTTP 状态码。
  • Fail-Slow 的危险性:以表格形式列出隐藏 bug、丢失上下文、状态损坏、调试噩梦、静默数据丢失等问题及其影响。
  • Fail Fast 技巧:包括尽早验证输入、断言不变量(前置条件与后置条件)、利用类型系统让编译器捕获空值问题。
  • 压力抵抗协议:针对“应用不应崩溃”“返回而不是抛出”“优雅处理错误”“防御式编程”四种常见压力,给出回应与行动建议。
  • 红旗信号清单:列出需要立即重构的模式,如 catch (e) { return null; }、catch (e) { return { success: false }; }、静默提前返回、空 catch、返回默认值、泛化的“内部错误”、记录错误后继续执行等。
  • 快速参考对照表:对比 Fail Slow(坏)与 Fail Fast(好)的写法,例如 catch (e) { return null } 对比 catch (e) { throw e },if (!user) return 对比 if (!user) throw new NotFoundError()。
  • 常见合理化借口及反驳:逐条列出“应用不应崩溃”“返回而不是抛出”“优雅错误处理”“防御式编程”“绝不让函数崩溃”“用户体验”等借口,并说明其为何无效。

使用方式

该技能以原则和代码示例的形式呈现,开发者可在编写或审查错误处理代码时对照使用。资料中未提供具体的安装命令或集成步骤。

适用场景

适用于需要编写错误处理逻辑、审查异常捕获代码、设计 API 错误响应、以及希望避免静默失败和状态损坏的软件开发场景。

限制

资料中未提供关于该技能的具体平台支持、收费方式、价格或效果保证等信息。