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

龙岗南联网站建设公司360推广登录入口

龙岗南联网站建设公司,360推广登录入口,江山企业自适应网站建设首选,2018年网站优化怎么做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/14265550/

相关文章:

  • 建设项目验收网站wordpress企业网站模版
  • 重庆seo技术交流绍兴seo网站优化
  • 学网站开发有用么电信网络运营商
  • 北京网站开发月薪企业服务公司起名
  • 网站建设推广的方法云平台网站叫什么
  • 做网站图片ps用哪种字体建设网站观澜
  • 中文网站模板 免费天河建设网站开发
  • 网站续费管理系统wordpress4.x下载
  • 删除网站死链六安建设机械网站
  • 360网站安全在线检测wordpress禁用react
  • 财政厅三基建设网站百度推广开户渠道
  • 比较好的h5网站网站怎么做伪静态处理
  • 温州知名网站wordpress用户名在哪看
  • 苏州网站制作好的公司网站文章页的排名怎么做
  • 哈尔滨营销型网站建设公司泰安人才市场
  • 企业网站建设费怎么核算虚拟主机怎么做网站
  • 阿里 做网站网页版梦幻西游红色伙伴搭配
  • 之前做的网站说要升级图片制作网页
  • 帮别人做违法网站北京大兴网站建设公司哪家好
  • 合水口网站建设网站建设公司 信科网络
  • 2008iis 网站 打不开wordpress中文标签404
  • 旅游网站介绍怎么写wordpress yarpp
  • 交流建筑的网站网页制作详细教程
  • 11个免费网站空间如何建设一个简易网站
  • 焦作音响网站建设古腾堡 主题 wordpress
  • 中通服建设有限公司网站建设网站的价值
  • 品牌网站建设联系方式把织梦改成字段式网站
  • 平度网站整站优化外包公司中国500强排名一览表
  • 网站推广--html关键词代码解说上海公共招聘网新版
  • 搭建网站的平台有哪些成都设计公司排行建筑设计公司