C++ 异常处理机制:异常捕获、自定义异常与实战应用
学习目标与重点
咱们今天聊聊 C++ 里怎么优雅地处理错误。核心目标就几个:搞懂 try-catch-throw 的底层逻辑,学会自己造异常类,还有在实际开发里怎么避免内存泄漏和状态不一致。特别是 noexcept 关键字和 RAII 模式,这可是提升代码健壮性的关键。
💡 核心重点:try-catch 的匹配顺序、自定义异常的继承设计、异常安全原则以及实战中的策略选择。
异常处理概述
什么是异常处理
简单说,异常处理就是把'发现错误'和'解决错误'分开。程序跑着跑着遇到坑(比如除以零),直接抛个异常出去,让专门负责兜底的模块去处理,而不是让程序直接崩掉。
🗄️ 打个比方:
- 快递配送:快递员发现地址错了(异常),不会把货扔路边,而是上报系统(抛出),客服介入联系收件人(处理)。
- 餐厅点餐:厨师发现没菜了,不直接拒单,告诉服务员(抛出),服务员跟顾客解释并推荐别的(处理)。
为什么需要异常处理
以前我们习惯用返回值判断错误,但这玩意儿缺陷挺多:
// 传统方式:通过返回值判断
int divide(int a, int b) {
if (b == 0) {
return -1; // 用 -1 表示错误,但 -1 可能是合法计算结果
}
return a / b;
}
int main() {
int result = divide(10, 0);
if (result == -1) {
cout << "除数不能为 0!" << endl;
} else {
cout << "结果:" << result << endl;
}
return 0;
}


