Linux环境下的C++异常处理机制,依赖于try、catch和throw三个关键字。当程序运行中出现错误时,可以
使用throw抛出异常,try块中的代码若发生异常则会跳转到相应的catch块进行处理。
基本步骤:
try块: 将可能引发异常的代码放入try块中。try {
// 潜在异常代码
}
throw语句: 使用throw抛出异常对象。异常对象可以是内置类型(如int)、标准异常类(如std::runtime_error)或自定义异常类。throw std::runtime_error("错误信息");
catch块: catch块用于捕获并处理异常。每个catch块指定要捕获的异常类型,并包含处理该类型异常的代码。可以有多个catch块处理不同类型的异常。catch (const std::runtime_error& e) {
// 处理std::runtime_error异常
std::cerr << "Error: " << e.what() << std::endl;
}
catch (int errNum) {
// 处理int类型异常
std::cerr << "Integer Error: " << errNum << std::endl;
}
try-catch块之后的代码。示例:
#include#include int main() { int a = 10; int b = 0; try { if (b == 0) { throw std::runtime_error("除数不能为零!"); } int result = a / b; std::cout << "结果: " << result << std::endl; } catch (const std::runtime_error& error) { std::cerr << "错误: " << error.what() << std::endl; } std::cout << "程序继续执行..." << std::endl; // 即使发生异常,这行代码也会执行 return 0; }
编译和运行:
使用g++编译器编译代码:
g++ -o myprogram myprogram.cpp
然后运行可执行文件:
./myprogram
这个例子演示了如何使用std::runtime_error处理除零错误。 error.what()方法可以获取异常的描述信息。 程序在发生异常后,仍然能够继续执行后续代码,体现了异常处理机制的健壮性。