C++ 中异常类型的处理机制是怎样的,常见异常类型有哪些?

C++ 中异常类型的处理机制是怎样的,常见异常类型有哪些?

C++17671968232025-05-01 23:54:57643A+A-

C++ 中异常类型的处理机制及常见异常类型

在 C++ 编程里,异常处理机制是一个十分关键的部分,它能帮助我们更好地应对程序运行时出现的各种意外状况,让程序的稳定性和健壮性得到提升。下面就来详细聊聊 C++ 中异常类型的处理机制以及常见的异常类型。

C++ 异常处理机制

C++ 的异常处理机制主要由三个关键字构成,分别是 trycatchthrow。我们可以把可能会抛出异常的代码块放在 try 语句块中,要是在这个代码块里发生了异常,就会使用 throw 关键字来抛出异常。之后,程序会跳转到相应的 catch 语句块中对异常进行处理。

下面是一个简单的示例:

#include <iostream>
int divide(int a, int b) {
    if (b == 0) {
        throw "Division by zero!";
    }
    return a / b;
}

int main() {
    try {
        int result = divide(10, 0);
        std::cout << "Result: " << result << std::endl;
    } catch (const char* msg) {
        std::cerr << "Error: " << msg << std::endl;
    }
    return 0;
}

在这个例子中,divide 函数在除数为 0 时会抛出一个异常。在 main 函数里,我们把 divide 函数的调用放在 try 语句块中,当异常被抛出时,就会进入 catch 语句块对异常信息进行输出。

常见异常类型

标准库异常

C++ 标准库定义了一系列的异常类,这些类都继承自 std::exception 基类。常见的标准库异常类型有:

  • std::bad_alloc:当使用 new 运算符进行动态内存分配失败时,就会抛出这个异常。
  • std::out_of_range:当使用 std::vectorstd::string 等容器时,如果访问的下标超出了容器的有效范围,就会抛出该异常。
  • std::invalid_argument:当传递给函数的参数不合法时,会抛出这个异常。

自定义异常

除了标准库异常,我们还能根据实际需求自定义异常类。自定义异常类通常会继承自 std::exception 或者它的某个派生类。下面是一个自定义异常类的示例:

#include <iostream>
#include <exception>

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

void test() {
    throw MyException();
}

int main() {
    try {
        test();
    } catch (const std::exception& e) {
        std::cerr << "Exception caught: " << e.what() << std::endl;
    }
    return 0;
}

在这个示例中,我们定义了一个名为 MyException 的自定义异常类,并重写了 what 函数来返回异常信息。

总之,掌握 C++ 的异常处理机制和常见异常类型,能够让我们在编写程序时更有效地处理各种意外情况,提升程序的质量和稳定性。无论是使用标准库异常,还是自定义异常,都要根据具体的需求和场景来合理运用。

点击这里复制本文地址 以上内容由电脑小白整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交
qrcode

电脑小白 © All Rights Reserved.  
Powered by Z-BlogPHP Themes by yiwuku.com
联系我们| 关于我们| 留言建议| 网站管理