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

零食天堂专做零食推荐的网站桂林小学网站建设

零食天堂专做零食推荐的网站,桂林小学网站建设,会员管理系统设计,企业的网站用vue做的1. 异常 异常通常用于处理逻辑上可能发生的错误 在C98中#xff0c;提供了一套完善的异常处理机制#xff0c;直接在程序中将各种类型的异常抛出#xff0c;从而强制终止程序的运行。 1.1 基本语法 当函数抛出异常时#xff0c;程序会停止执行#xff0c;并显示异常信息…1. 异常 异常通常用于处理逻辑上可能发生的错误 在C98中提供了一套完善的异常处理机制直接在程序中将各种类型的异常抛出从而强制终止程序的运行。 1.1 基本语法 当函数抛出异常时程序会停止执行并显示异常信息。异常处理程序可以通过catch语句捕获并处理异常。如果程序没有捕获异常程序将终止。 在C中栈的解旋是在try块中的函数调用完毕后自动完成的。这意味着在try块中的函数调用可能会抛出异常但不会影响栈的解旋。在catch块中处理异常时栈的解旋会被暂停直到catch块处理完毕后栈的解旋才会恢复。 #include iostream using namespace std; void func() {int x 10;int* p x;*p 20;throw *p; }void catch_func(int a) {std::cout Caught exception: a std::endl; }int main() {try {func();} catch (int e) {catch_func(e);}return 0; } hehedaheheda:~/Linux/c11$ g 8.noexcept.cpp -o app hehedaheheda:~/Linux/c11$ ./app Caught exception: 20 【总结】noexcept | 爱编程的大丙 (subingwen.cn) 异常被抛出后从进入try块起到异常被抛掷前这期间在栈上构造的所有对象都会被自动析构。析构的顺序与构造的顺序相反。这一过程称为栈的解旋。----来自爱编程的大丙 1.2 异常接口声明 ① 显示指定可以抛出的异常类型 divide 函数后添加了 throw 异常接口声明其参数可以表示抛出的异常类型分别为 int 和 MyException 类型 #include iostream using namespace std;struct MyException {MyException(string str):msg(str) {}string msg; };double divide(int a, int b) throw(MyException,int) {if(b 0) {throw MyException(divide by zero);}return a / b; }int main() {try{double val divide(10, 0);cout value: val endl;}catch(int e) {cout catch except: e endl;}catch(MyException e) {cout catch except: e.msg endl;}return 0; } 运行结果  catch except: divide by zero ② 不抛出任何异常 #include iostream using namespace std;struct MyException {MyException(string str):msg(str) {}string msg; };double divide(int a, int b) throw() {if(b 0) {throw MyException(divide by zero);}return a / b; }int main() {try{double val divide(10, 0);cout value: val endl;}catch(int e) {cout catch except: e endl;}catch(MyException e) {cout catch except: e.msg endl;}return 0; } 在divide 函数后添加了throw异常接口声明其参数列表为空表示该函数不允许抛出异常 2. noexcept double divisionMethod(int a, int b) noexcept(常量表达式); ① 简单地在函数声明后加上 noexcept 关键字 ② 可以接受一个常量表达式作为参数常量表达式的结果会被转换成一个bool类型的值          - 值为 true表示函数不会抛出异常          - 值为 false表示有可能抛出异常这里          - 不带常量表达式的noexcept相当于声明了noexcepttrue即不会抛出异常 noexcept | 爱编程的大丙 (subingwen.cn) ----来自爱编程的大丙 在C11中弃用了例如上文的动态异常声明 throw(MyException, int)这一特性表示函数不会抛出异常的动态异常声明 throw() 也被新的 noexcept 异常声明所取代 noexcept是C11中引入的一个关键字用于指定函数抛出异常的情况。当函数声明中使用noexcept时编译器可以推断函数不会抛出异常从而提高代码的执行效率。 noexcept 与 throw动态异常声明的区别 ① 基于异常机制的throw()会带来一些额外的开销若出现函数抛出异常会导致函数栈被依次地展开栈解旋并自动调用析构函数栈上的所有函数 ② noexcept 修饰的函数如果抛出了异常编译器可以选择直接调用 std::terminate() 函数来终止程序的运行这比基于异常机制的 throw() 在效率上会高一些 #include iostream using namespace std; void func() noexcept {std::cout This function does not throw exceptions std::endl; }int main() {try {func();} catch (...) {std::cout Exception caught std::endl;}return 0; } 在这个例子中func函数使用noexcept关键字指定因此编译器可以推断出函数不会抛出异常从而提高代码的执行效率。而main函数中的func调用不会抛出异常因此程序可以正常运行。 #include iostream using namespace std;double divide(int a, int b) noexcept {if(b 0) {cout divide by zero!!! endl;return -1;}return a / b; }int main() {try{double val divide(10, 0);cout value: val endl;}catch(int e) {cout catch except: e endl;}return 0; } hehedaheheda:~/Linux/c11$ g -stdc11 8.noexcept.cpp -o app hehedaheheda:~/Linux/c11$ ./app divide by zero!!! value: -1
http://www.hkea.cn/news/14284849/

相关文章:

  • 贵州建设厅考试网站准考证下载中国建设银行大学助学贷款网站
  • 天猫优惠券网站怎么做的沧州做网站多少钱
  • 河南郑州建设网站长沙手机网站首页设计公司
  • 黄金网站软件app大全重庆工程招标网站有哪些
  • 住房与城乡建设部网站做一个app大概要多少钱
  • 深圳做网站哪里好网站建设属于什么费
  • 最便宜的手机网站建设南阳卧龙区网站建设哪家好
  • 网站建设的公司做销售沪佳装修贵吗
  • 海兴做网站国际新闻最新消息今天新闻大事件视频
  • 平台类网站建设价格表东营seo
  • 网站开发服务器资源怎么弄建设通网站联系电话
  • 下载一个网站上海市网站建设电话号码
  • 虚拟机做网站南京做网站南京乐识好
  • 沈阳个人做网站qq推广软件
  • 唐山哪个公司可以制作网站eechina电子工程网
  • 浪琴女士手表网站平面ui设计是学什么
  • 引用网站的内容如何做注释网页设计实验报告格式模板
  • codewars网站wordpress需要登录密码错误
  • 建设官方网站怎么修改预留手机太原本地网站
  • 论坛网站模板下载企业网站整合
  • 网站手机端页面怎么做的合肥专业制作网站
  • 加速百度对网站文章的收录易语言 做的网站
  • 莱芜网站建设sikesoft怎样做类似淘宝网的网站
  • 海南学校网站建设百度云wordpress教程
  • 手机端制作游戏的app南昌seo网站管理
  • 专业的网站建设网络高端网络工程师培训
  • 国家和住房城乡建设部网站零基础学软件开发需要多久
  • 自己做视频网站只能用地址连接上海注销营业执照流程
  • 网站专题页优化wordpress 自己写
  • 网站用什么语言wordpress ip 跳转