C++异常处理通过try、catch、throw实现,用于应对不可预测但可恢复的错误;try块必须后跟至少一个catch块,catch按异常类型匹配捕获,未捕获则调用std::terminate终止程序。

在C++中,异常处理主要通过 try、catch 和 throw 三个关键字配合实现。它不是用来替代常规错误检查(比如判断指针是否为空),而是应对程序运行中**不可预测、非常规但可恢复的错误场景**,比如内存分配失败、文件打开失败、数组越界访问(需手动检查)等。
基本语法结构:try-catch捕获异常
核心结构是把可能出问题的代码放在 try 块中,用一个或多个 catch 块来接收并处理抛出的异常:
- try 块必须紧跟至少一个 catch,不能单独存在;
-
catch 后面的括号里写的是**异常类型**(可以是内置类型如
int、const char*,也可以是自定义类),支持类型匹配和自动类型转换(有限制); - 一旦 try 中某处执行了 throw,程序立即跳出当前函数调用栈,逐层向上寻找匹配的 catch;没找到就终止程序(调用
std::terminate)。
示例:
try {
int* p = new int[1000000000]; // 可能抛出 std::bad_alloc
throw std::runtime_error("模拟运行时错误");
} catch (const std::runtime_error& e) {
std::cout << "捕获 runtime_error: " << e.what() << "\n";
} catch (const std::exception& e) {
std::cout << "捕获其他标准异常: " << e.what() << "\n";
} catch (...) {
std::cout << "捕获所有其他类型的异常(慎用)\n";
}登录后复制
推荐使用标准异常类,而非原始类型
C++标准库提供了 <stdexcept></stdexcept> 中的一系列异常类(如 std::invalid_argument、std::out_of_range、std::logic_error、std::runtime_error 等),它们都继承自 std::exception,具备 what() 成员函数返回描述信息。
立即学习“C++免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~