当前位置: 首页 > news >正文

关键字noexcept

c++中通过throw关键字抛出异常,通过try{}catch{}捕获异常,在对应函数后添加throw()指定可以抛出的异常类型

#include<iostream>
using namespace std;struct MyException {MyException(string str) : msg(str) {}string msg;
};void func() throw(int ,double,MyException){ // throw(int, double, MyException)该函数只允许抛出指定类型的异常     windows中只警告,但是linux中报错 // 如果throw()  括号中什么都没有,就是这个函数不允许抛出异常    // 不写throw(...)是指这个函数可以抛出任意类型的异常try{//throw 1;throw MyException("string exception!");}catch (int e){cout << "throw value: " << e << endl;}catch (MyException e) {cout << "Myexpection:" << e.msg << endl;}
}int main() {func();system("pause");return 0;
}

就如上面代码中的例子:func()函数中抛出异常并且捕获,func被限制只能抛出int,double,MyException类型的异常。

throw(int, double, MyException)该函数只允许抛出指定类型的异常 在windows中只警告,但是linux中报错

如果throw() 括号中什么都没有,就是这个函数不允许抛出异常

不写throw(...)是指这个函数可以抛出任意类型的异常

C++11新增了noexcept关键字

#include<iostream>
using namespace std;struct MyException {MyException(string str) : msg(str) {}string msg;
};void func() noexcept(true){ // 在c++11中使用noexcept代替throw()表示这个函数不允许抛出异常,需要抛出异常只需要去掉关键字noexcept即可// noexcept()关键字后面可以加括号,里面写表达式,如果表达式返回值为true:noexcept就有效,该函数不能向外抛异常;返回值为false:noexcept就无效,该函数就可以向外抛异常//throw 1;throw MyException("string exception!");
}int main() {try{func();}catch (int e){cout << "throw value: " << e << endl;}catch (MyException e) {cout << "Myexpection:" << e.msg << endl;}system("pause");return 0;
}

就如上面的例子:在函数func()后面添加noexcept限制该函数向外不能抛出异常

noexcept()关键字后面可以加括号,里面写表达式,如果表达式返回值为truenoexcept(true)就有效,该函数不能向外抛异常;返回值为falsenoexcept(false)就无效,该函数就可以向外抛异常。

不带括号的noexcept相当于noexcept(true),即不会抛出异常。

noexcept(表达式)用在模板中,限制模板中的类型,但是也不常用

http://www.jsqmd.com/news/434337/

相关文章:

  • 2026年探秘合肥国央企就业指导推荐公司,成功率高的怎么选 - 工业推荐榜
  • GitHub 热榜项目 - 日榜(2026-03-04)
  • 国央企就业面试有啥技巧,华世星空课程能提供有效指导吗? - myqiye
  • 小户型健身不设限|小户型适合的健身器材,上海皓衍精选,小空间也能解锁健身自由 - 冠顶工业设备
  • 有做DeepSeek推广的公司吗?怎么联系? - 品牌2026
  • DeepSeek的GEO要怎么做?哪家公司可以做? - 品牌2026
  • 悟饭游戏厅-悟饭趣玩_苹果解会员权限Crack
  • DeepSeek的GEO要怎么做?哪家公司可以做?怎么联系? - 品牌2026
  • 盘点合肥培训就业组织,哪家技术强值得选? - mypinpai
  • 盘点2026合肥培训就业机构,哪家性价比和口碑双优 - 工业设备
  • 被问爆的动态壁纸神器!Wallpaper Engine 不仅能看,还能跟着音乐 “跳舞”
  • 【2026年最新600套毕设项目分享】基于SpringBoot的农业信息管理系统(14050)
  • 细聊2026年合肥国央企就业服务,哪家的辅导方案落地更容易? - 工业品网
  • 如何通过DeepSeek推广获客?哪家公司可以做DeepSeek广告? - 品牌2026
  • 【2026年最新600套毕设项目分享】基于SpringBoot的商场停车场管理系统(14049)
  • 分析2026年合肥培训就业服务中心,哪家售后好有保障 - myqiye
  • 基于Java+Springboot+Vue开发的蛋糕商城管理系统源码+运行步骤+计算机技术
  • 【Linux】条件判断eq、ne、gt、lt、ge、le
  • 基于STM32平台的步进电机S型曲线加减速驱动程序
  • DeepSeek可以做广告推广吗?怎么做?联系谁? - 品牌2026
  • 2026年拆迁纠纷律师维权公司哪家好,盛廷律所值得推荐 - 工业品牌热点
  • 2026年不错的拆迁纠纷律师维权机构盘点,服务全国范围 - 工业推荐榜
  • 正姿养身,优雅随行|武汉瑜伽体态矫正,禧悦助你告别体态焦虑 - 冠顶工业设备
  • Next.js 增量静态再生深度解析
  • 2026年比较好的折叠遮阳棚/电动遮阳棚长期合作厂家推荐 - 品牌宣传支持者
  • 说说保定靠谱的全屋定制企业,铂存装饰为何备受青睐? - 工业品牌热点
  • 多模态创造类模型
  • 2026年保定专业的全屋定制公司排名,这几家口碑好又靠谱 - 工业推荐榜
  • 农村宅基地拆迁补偿新规定实施时间是什么时候 - myqiye
  • 理解类模型 YOLOv8-ViT-MiniCPM4.0