什么是异常处理

在C++中,异常处理是一种可以在程序运行时遇到问题时传递错误信息的机制。当程序在执行过程中发生错误或异常情况时,可以抛出异常并通过异常处理机制来处理这些异常。

如何抛出异常

要在C++中抛出异常,可以使用throw语句。throw语句可以抛出任何类型的数据,包括C++内置类型、自定义类型、对象等。下面是抛出异常的示例代码:

// 定义一个函数,模拟执行某个任务
void executeTask(int task)
{
    // 检查任务是否有效
    if (task <= 0)
    {
        // 当任务无效时,抛出异常
        throw "Invalid task";
    }

    // 执行任务
    // ...
}

int main()
{
    try
    {
        // 调用函数并执行任务
        executeTask(0);
    }
    catch(const char* e)
    {
        // 捕获并处理异常
        std::cout << "Exception: " << e << std::endl;
    }

    return 0;
}

异常处理

在C++中,可以使用try-catch语句来捕获和处理异常。try块中包含可能抛出异常的代码,catch块用于捕获并处理异常。

在上面的示例代码中,try块包含了调用executeTask函数的代码,即执行任务的代码。如果在执行任务时抛出了异常,catch块将会捕获到异常并执行相应的处理代码。在catch块中,我们可以使用任何合法的C++代码来处理异常,例如输出错误信息、记录日志、恢复程序状态等。

常见的异常类型

在C++中,有一些常见的异常类型,包括标准库异常类和自定义异常类。标准库异常类是在标准库中定义的,可以用于处理常见的异常情况。自定义异常类是根据自己的需求定义的,用于处理特定的异常情况。以下是一些常见的异常类型:

  1. std::exception:所有标准库异常类的基类。
  2. std::invalid_argument:当传递给函数的参数无效时抛出。
  3. std::out_of_range:在访问数组或容器中的元素时,索引超出范围。
  4. std::logic_error:逻辑错误,例如使用了无效的指针或调用了未初始化的对象。
  5. std::runtime_error:运行时错误,例如断言失败、内存分配失败等。

使用这些异常类可以更好地区分并处理不同的异常情况,使代码更具可读性和可维护性。