C++中异常处理通过try-catch捕获throw抛出的错误,使用标准异常类如std::runtime_error可提升程序健壮性,建议按引用捕获以避免切片。

在C++中,异常处理是一种用于应对程序运行时错误的机制,比如数组越界、内存分配失败或文件无法打开等。通过 try-catch 结构,程序可以在出错时优雅地处理问题,而不是直接崩溃。
使用 try-catch 可以捕获并处理异常。基本结构如下:
try {
// 可能抛出异常的代码
} catch (异常类型1 变量名) {
// 处理特定类型的异常
} catch (异常类型2 变量名) {
// 处理另一种异常
} catch (...) {
// 捕获所有其他未处理的异常(通配符)
}
当 try 块中的代码使用 throw 抛出一个值时,程序会查找匹配的 catch 块来处理这个异常。
你可以使用 throw 关键字手动抛出异常,抛出的内容可以是整数、字符串、对象等。
立即学习“C++免费学习笔记(深入)”;
if (分母 == 0) {
throw "除数不能为零!";
}
这个异常可以在外层用 catch 捕获。
C++ 标准库定义了一系列异常类,位于 <stdexcept> 头文件中,例如:
示例代码:
#include <iostream>
#include <stdexcept>
using namespace std;
int main() {
try {
throw invalid_argument("参数错误!");
} catch (const invalid_argument& e) {
cout << "捕获到参数异常: " << e.what() << endl;
} catch (const exception& e) {
cout << "捕获到标准异常: " << e.what() << endl;
} catch (...) {
cout << "捕获到未知异常" << endl;
}
return 0;
}
注意:建议按引用捕获(如 const exception&),避免对象切片和额外拷贝。
比如在进行除法运算时防止除零:
double divide(int a, int b) {
if (b == 0) {
throw runtime_error("除零错误!");
}
return static_cast<double>(a) / b;
}
int main() {
try {
double result = divide(10, 0);
} catch (const exception& e) {
cout << "错误: " << e.what() << endl;
}
return 0;
}
这样程序不会崩溃,而是输出错误信息并继续执行后续逻辑。
基本上就这些。掌握 try-catch 和 throw 的配合使用,能让你的 C++ 程序更健壮、更安全。不复杂但容易忽略。
以上就是c++++怎么处理异常_C++异常处理机制try-catch使用方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号