Skip to content

第十六章 异常处理

在任何具备实际规模的软件工程中,错误总是不可避免的。网络可能断开,文件可能丢失,用户可能输入了非法的数据,内存甚至也有可能被耗尽。

程序如何去报告错误并且处理错误,是衡量一个系统架构是否稳健的重要指标。

在 C 语言时代,大家普遍使用“返回错误码(Return Codes)”或者全局变量(如 errno)来兜底。这种方式的问题在于容易被调用者忽略,且一层层传递错误码会让正常业务逻辑变得支离破碎。

C++ 引入了**异常(Exceptions)**机制,它强制打断当前执行流,强迫程序必须对错误作出正面回应,否则就崩溃退出。

本章我们进入第七部分【工程实践】的第一站,探讨 C++ 中的异常管理体系:

  1. 异常机制:学习 trycatchthrow 铁三角的运转原理及栈展开。
  2. 标准异常类:认识 <stdexcept> 中系统预置的异常家族体系,并派生我们自己的业务异常。
  3. 异常安全:这是高级 C++ 程序员必须跨越的门槛——当异常满天飞时,如何保证程序状态不被污染、资源不发生泄漏?(剧透:全靠第 10 章学过的 RAII)。