C++ 异常处理机制:异常捕获、自定义异常与实战应用
导读
本文旨在深入探讨 C++ 中的异常处理机制。我们将掌握核心概念(异常、抛出、捕获、处理)及基本语法,理解 try-catch-throw 语句的执行流程,学会自定义异常类以满足实际开发需求,并掌握最佳实践以规避内存泄漏等常见错误。
学习目标
- 掌握异常处理的核心概念及基本语法
- 理解 try-catch-throw 语句的执行流程
- 学会自定义异常类,满足个性化场景需求
- 掌握异常处理的最佳实践,规避常见错误
- 理解 noexcept 关键字的使用场景
- 结合实战案例,提升代码的健壮性和容错能力
一、异常处理概述
1.1 什么是异常处理
异常处理是 C++ 中处理程序运行时错误的机制,核心是将错误检测与错误处理分离。在程序出错的地方(如除以零、内存分配失败)抛出异常,在合适的地方捕获并处理,避免程序直接崩溃。
生活中的类比有助于理解:
- 快递配送:快递员发现地址错误时上报快递公司,由客服联系收件人解决。
- 餐厅点餐:厨师发现食材耗尽时告知服务员,由服务员向顾客说明并推荐其他菜品。
1.2 为什么需要异常处理
在异常处理出现前,程序通常通过返回值判断是否出错,但存在明显缺陷:
// 传统错误处理:通过返回值判断
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;
}
传统错误处理的缺陷包括:返回值可能与合法结果冲突;需手动检查每个函数返回值,代码冗余且易遗漏;错误传播困难。
异常处理的优势在于:错误检测与处理分离,代码结构清晰;异常可跨函数、跨层级传播;可携带丰富的错误信息;避免程序因小错误直接崩溃。
1.3 C++ 异常处理的核心组件
C++ 异常处理依赖三个核心关键字:

