17370845950

C++ Linux下如何进行异常处理

Linux环境下的C++异常处理机制,依赖于trycatchthrow三个关键字。当程序运行中出现错误时,可以使用throw抛出异常,try块中的代码若发生异常则会跳转到相应的catch块进行处理。

基本步骤:

  1. try块: 将可能引发异常的代码放入try块中。
try {
    // 潜在异常代码
}
  1. throw语句: 使用throw抛出异常对象。异常对象可以是内置类型(如int)、标准异常类(如std::runtime_error)或自定义异常类。
throw std::runtime_error("错误信息"); 
  1. 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;
}
  1. 程序继续执行: 如果异常被成功处理,程序将继续执行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()方法可以获取异常的描述信息。 程序在发生异常后,仍然能够继续执行后续代码,体现了异常处理机制的健壮性。