异常类以及noexcept

异常类型之定义了一个名为what的成员函数,该函数没有任何参数,返回值是一个指向c风格的字符串const char *
exception头文件定义了最通用的异常类exception. 它只报告异常的发生,不提供任何额外信息。
stdexcept头文件定义了几种常见的类型
new头文件定义了bad_alloc异常类型
type_info头文件定义了bad_cast类型

C++11将异常简化为以下两种情况:
1. 函数可能抛出异常
2. 函数不能抛出异常

void my_throw();
void no_throw() noexcept;

使用noexcept修饰过的函数如果抛出异常,编译器会使用std::terminate()来终止程序的运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们需要在C++中处理特定类型的错误时,可以自定义异常类来表示这些错误。在C++中,自定义异常类通常是通过继承标准异常类std::exception来实现的。 下面是一个示例代码,展示了如何自定义一个名为MyException的异常类: ```cpp #include <exception> #include <string> class MyException : public std::exception { public: MyException(const std::string& errorMessage) : errorMessage(errorMessage) {} const char* what() const noexcept override { return errorMessage.c_str(); } private: std::string errorMessage; }; ``` 在这个示例中,我们定义了一个名为MyException的异常类,它继承自std::exception类。我们通过构造函数接受一个字符串参数,用于设置异常的错误信息。在what()方法中,我们重写了std::exception类的what()方法,以便返回我们自定义的错误信息。 我们可以在程序中使用这个自定义的异常类,例如: ```cpp #include <iostream> void divide(int dividend, int divisor) { if (divisor == 0) { throw MyException("Divisor cannot be zero!"); } std::cout << "Result: " << dividend / divisor << std::endl; } int main() { try { divide(10, 0); } catch (const MyException& e) { std::cerr << "Exception caught: " << e.what() << std::endl; } return 0; } ``` 在上述示例中,我们定义了一个divide()函数,用于进行整数相除操作。如果除数为零,我们就抛出一个MyException类型的异常。在main()函数中,我们使用try-catch块来捕获并处理这个异常。如果捕获到异常,我们会输出异常的错误信息。 这样,我们就可以根据需要自定义各种类型的异常类来表示特定的错误情况,并在程序中进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值