首页/开发/代码质量与评审速查/防御式编程与快速失败(Fail Fast)
设计原则与模式62 条

防御式编程与快速失败(Fail Fast)

防御式编程检查输入与状态,快速失败在错误发生点立即终止:构建期能拦的不留到运行期,能抛异常的不静默返回;与契约式设计互补——进入系统时严格校验,内部信任契约。

边界外部输入严格校验(快速失败)
内部信任内部契约,避免重复防御
手段前置条件检查、参数断言、显式异常

失败方式对照

失败方式对照
// 静默兜底:错误数据进入下游,问题延后暴露
if (qty == null) qty = 1;

// 快速失败:就地拦截,栈信息指向源头
Objects.requireNonNull(qty, "qty required");
if (qty <= 0) throw new IllegalArgumentException("qty must be positive");

易错点

  • 内部调用层层重复校验:代码臃肿、性能受损
  • 把异常用作控制流:可读性与性能都被拖累

数据来源与参考

  • 《The Pragmatic Programmer》防御式编程与 Design by Contract 实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌