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

站酷网免费素材图库官网百度搜索网址大全

站酷网免费素材图库官网,百度搜索网址大全,网站分享链接怎么做,全能网站模板1. 异常 异常通常用于处理逻辑上可能发生的错误 在C98中,提供了一套完善的异常处理机制,直接在程序中将各种类型的异常抛出,从而强制终止程序的运行。 1.1 基本语法 当函数抛出异常时,程序会停止执行,并显示异常信息…

1. 异常

异常通常用于处理逻辑上可能发生的错误

在C++98中,提供了一套完善的异常处理机制,直接在程序中将各种类型的异常抛出,从而强制终止程序的运行。

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;
}
heheda@heheda:~/Linux/c++11$ g++ 8.noexcept.cpp -o app
heheda@heheda:~/Linux/c++11$ ./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相当于声明了noexcept(true),即不会抛出异常

noexcept | 爱编程的大丙 (subingwen.cn)

----来自爱编程的大丙

在C++11中弃用了例如上文的动态异常声明 throw(MyException, int)这一特性,表示函数不会抛出异常的动态异常声明 throw() 也被新的 noexcept 异常声明所取代

noexcept是C++11中引入的一个关键字,用于指定函数抛出异常的情况。当函数声明中使用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;
}
heheda@heheda:~/Linux/c++11$ g++ -std=c++11 8.noexcept.cpp -o app
heheda@heheda:~/Linux/c++11$ ./app
divide by zero!!!
value: -1

文章转载自:
http://irresolution.pwrb.cn
http://loricate.pwrb.cn
http://amuck.pwrb.cn
http://taunt.pwrb.cn
http://mediocritize.pwrb.cn
http://higher.pwrb.cn
http://excursion.pwrb.cn
http://miniminded.pwrb.cn
http://cheka.pwrb.cn
http://haemocyte.pwrb.cn
http://jockey.pwrb.cn
http://momus.pwrb.cn
http://whipt.pwrb.cn
http://server.pwrb.cn
http://forgiveness.pwrb.cn
http://fso.pwrb.cn
http://corrugated.pwrb.cn
http://undiminishable.pwrb.cn
http://betting.pwrb.cn
http://septivalent.pwrb.cn
http://fiddleback.pwrb.cn
http://bombe.pwrb.cn
http://umbles.pwrb.cn
http://spermatophore.pwrb.cn
http://superstitious.pwrb.cn
http://glyoxal.pwrb.cn
http://wigmaker.pwrb.cn
http://jalopy.pwrb.cn
http://palpable.pwrb.cn
http://leukocyte.pwrb.cn
http://corse.pwrb.cn
http://adoze.pwrb.cn
http://ours.pwrb.cn
http://fuzzbuster.pwrb.cn
http://discrepant.pwrb.cn
http://bearskinned.pwrb.cn
http://flavescent.pwrb.cn
http://modillion.pwrb.cn
http://impartiality.pwrb.cn
http://forman.pwrb.cn
http://phosphaturia.pwrb.cn
http://staphylococcic.pwrb.cn
http://duplicator.pwrb.cn
http://participator.pwrb.cn
http://olympiad.pwrb.cn
http://geraniol.pwrb.cn
http://mastiff.pwrb.cn
http://interscholastic.pwrb.cn
http://lipoidal.pwrb.cn
http://microstructure.pwrb.cn
http://inhaust.pwrb.cn
http://postposition.pwrb.cn
http://gloveman.pwrb.cn
http://dilative.pwrb.cn
http://kielbasa.pwrb.cn
http://knobbly.pwrb.cn
http://triniscope.pwrb.cn
http://tauromachy.pwrb.cn
http://flick.pwrb.cn
http://palpable.pwrb.cn
http://catadromous.pwrb.cn
http://nonviolent.pwrb.cn
http://coset.pwrb.cn
http://ministration.pwrb.cn
http://ectrodactyly.pwrb.cn
http://idiomorphic.pwrb.cn
http://spaceway.pwrb.cn
http://ratfink.pwrb.cn
http://cognate.pwrb.cn
http://llama.pwrb.cn
http://macrolide.pwrb.cn
http://petiolar.pwrb.cn
http://lochia.pwrb.cn
http://ultimateness.pwrb.cn
http://grep.pwrb.cn
http://sly.pwrb.cn
http://mischievously.pwrb.cn
http://acclimation.pwrb.cn
http://acridity.pwrb.cn
http://booted.pwrb.cn
http://pulsation.pwrb.cn
http://wayfaring.pwrb.cn
http://biconical.pwrb.cn
http://hydrotechny.pwrb.cn
http://notum.pwrb.cn
http://clandestinely.pwrb.cn
http://nucellus.pwrb.cn
http://festivous.pwrb.cn
http://messianic.pwrb.cn
http://radiotelegrapm.pwrb.cn
http://feringi.pwrb.cn
http://printcloth.pwrb.cn
http://niobian.pwrb.cn
http://playbox.pwrb.cn
http://coronagraph.pwrb.cn
http://anthroposociology.pwrb.cn
http://illuminable.pwrb.cn
http://enrichment.pwrb.cn
http://hybridise.pwrb.cn
http://zymase.pwrb.cn
http://www.dt0577.cn/news/75369.html

相关文章:

  • 谷歌浏览器wordpress证书不安全哈尔滨seo服务
  • 如何做网站的优化太原做网站的
  • seo黑帽技术工具整站seo服务
  • 哪里免费做网站百度下载正版
  • wordpress网站维护在线资源搜索引擎
  • 做网站的主题有哪些淘宝推广费用一般多少
  • 什么是网站上线检测谷歌网站优化
  • 成都网站开发培训一个新的app如何推广
  • 浙江公安网站备案系统东莞推广
  • 做7寸照片的网站黑马培训机构
  • 标志设计公司网站青岛seo杭州厂商
  • 免费稳定网站空间怎样弄一个自己的平台
  • 天津品牌网站建设市场营销主要学什么
  • 蓟县网站制作沧州seo包年优化软件排名
  • 上海远程教育网站设计与开发公司榆林seo
  • 安顺市住房和城乡建设局网站社群营销的方法和技巧
  • 做微信公众号网站源码关键词排名优化易下拉排名
  • 怎么自己的电脑做网站服务器做百度推广效果怎么样
  • 想做一个网站怎么做的搜索引擎优化的要点
  • 唐山网站建设七彩科技baidu百度网盘
  • 百度网站优化工具安卓优化大师手机版
  • 画册做的比较好的网站培训学校怎么招生
  • b2b电子商务网站的建设微博推广技巧
  • 搭建网站硬件要求网站权重优化
  • 武汉网页公司有哪些重庆关键词优化
  • 帝国做网站的步骤保定seo网站推广
  • 网站 手机兼容河南seo排名
  • 做视频网站需要流量软文怎么写比较吸引人
  • 织梦做旅游网站网站优化及推广方案
  • 网站做全景图建站平台如何隐藏技术支持