117.info
人生若只如初见

C++标准异常类与自定义异常

C++ 标准异常类主要包括 std::exception 和其派生类

  1. std::exception:这是 C++ 标准库中所有异常类的基类。它提供了一个名为 what() 的虚函数,用于返回异常的描述信息。通常,我们可以通过捕获 std::exception 类型的异常来处理所有标准异常。
#include 
#include 

int main() {
    try {
        throw std::runtime_error("An error occurred");
    } catch (const std::exception& e) {
        std::cerr << "Caught exception: " << e.what() << std::endl;
    }
    return 0;
}
  1. std::runtime_error:这是一个派生自 std::exception 的异常类,用于表示运行时错误。它接受一个字符串参数作为异常的描述信息。
#include 
#include 

int main() {
    try {
        throw std::runtime_error("An error occurred");
    } catch (const std::runtime_error& e) {
        std::cerr << "Caught runtime_error: " << e.what() << std::endl;
    }
    return 0;
}
  1. std::out_of_range:这是一个派生自 std::runtime_error 的异常类,用于表示访问数组或其他容器时越界的情况。
#include 
#include 
#include 

int main() {
    std::vector vec = {1, 2, 3};

    try {
        std::cout << vec[3] << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "Caught out_of_range: " << e.what() << std::endl;
    }
    return 0;
}

要创建自定义异常类,只需从 std::exception 或其他标准异常类派生一个新的类,并实现 what() 函数。例如:

#include 
#include 

class MyCustomException : public std::exception {
public:
    const char* what() const noexcept override {
        return "My custom exception occurred";
    }
};

int main() {
    try {
        throw MyCustomException();
    } catch (const MyCustomException& e) {
        std::cerr << "Caught custom exception: " << e.what() << std::endl;
    }
    return 0;
}

在这个例子中,我们创建了一个名为 MyCustomException 的自定义异常类,它继承自 std::exception 并重写了 what() 函数。在主函数中,我们抛出了一个 MyCustomException 类型的异常,并在 catch 块中捕获并处理它。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe879AzsBBg9X.html

推荐文章

  • C++迭代器操作错误咋避免

    要避免C++迭代器操作错误,可以遵循以下几点建议: 初始化迭代器:确保在使用迭代器之前对其进行初始化。未初始化的迭代器可能导致未定义行为。 std::vector vec...

  • C++迭代器怎么创建使用

    在C++中,迭代器用于遍历容器(如数组、向量、列表等)中的元素。要创建和使用迭代器,你需要遵循以下步骤: 包含头文件:首先,你需要包含相应的头文件,以便使...

  • C++迭代器有哪些类型特点

    C++迭代器是一种用于遍历容器(如数组、向量、列表等)中元素的指针。C++标准库提供了多种类型的迭代器,每种迭代器都有其特定的用途和特点。以下是C++中常见的迭...

  • C++迭代器如何实现遍历

    在C++中,迭代器(Iterator)是一种用于遍历容器(如数组、向量、列表等)中元素的指针。C++标准库为各种容器提供了迭代器,使得遍历容器变得简单。以下是一个使...

  • C++标准异常类的处理方式

    C++ 标准异常类主要继承自 std::exception 类 使用 try-catch 语句块捕获异常: 在可能抛出异常的代码段周围使用 try 语句块,然后在 catch 语句块中处理异常。例...

  • C++标准异常类的错误信息

    C++ 标准异常类位于 头文件中,它们是继承自 std::exception 类的基类。这些异常类提供了关于错误的一般信息。以下是 C++ 标准异常类的继承结构:
    class st...

  • C++标准异常类的创建方法

    在C++中,标准异常类是从std::exception类派生出来的。要创建自定义异常类,你需要遵循以下步骤: 包含头文件:首先,需要包含头文件,以便使用std::exception类...

  • C++标准异常类的使用场景

    C++标准异常类主要包括std::exception及其派生类,它们用于在程序中处理异常情况。以下是一些常见的使用场景: 错误处理:当程序遇到不可恢复的错误时,可以抛出...