noexcept

noexcept 是 C++ 中的一个关键字,用于指定函数是否可能抛出异常。

1、在函数声明中使用 noexcept 关键字,表示该函数不会抛出任何异常。如果函数确实抛出了异常,程序将调用 std::terminate 函数,并可能终止程序执行。

例如:

void myFunction() noexcept;

2、在函数定义中使用:在函数定义中使用 noexcept 关键字,表示该函数的异常规格说明。如果函数不抛出任何异常,可以使用 noexcept(true);如果函数可能抛出异常,可以使用 noexcept(false)

例如:

void myFunction() noexcept(true) {// 函数代码}
测试程序:
#include <iostream>
#include <stdexcept>

void myFunction() noexcept {
    std::cout << "myFunction() is noexcept" << std::endl;
    // throw std::runtime_error("myFunction An exception occurred");
}

void myFunctionWithException() {
    throw std::runtime_error("An exception occurred");
}

int main() {
    try {
        myFunction(); // 调用 noexcept 函数
        myFunctionWithException(); // 调用可能抛出异常的函数
    } catch (const std::exception& e) {
        std::cout << "Caught exception: " << e.what() << std::endl;
    }
    return 0;
}

运行结果:

./noexcept 
myFunction() is noexcept
Caught exception: An exception occurred

2、如果在noexcept 抛异常,程序会挂掉

#include <iostream>
#include <stdexcept>

void myFunction() noexcept {
    std::cout << "myFunction() is noexcept" << std::endl;
    throw std::runtime_error("myFunction An exception occurred");
}

void myFunctionWithException() {
    throw std::runtime_error("An exception occurred");
}

int main() {
    try {
        myFunction(); // 调用 noexcept 函数
        myFunctionWithException(); // 调用可能抛出异常的函数
    } catch (const std::exception& e) {
        std::cout << "Caught exception: " << e.what() << std::endl;
    }
    return 0;
}

运行结果:

./noexcept 
myFunction() is noexcept
terminate called after throwing an instance of 'std::runtime_error'
  what():  myFunction An exception occurred
已放弃 (核心已转储)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值