- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C异常机制分析
C++ 异常机制分析 阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAII 异常机制与构造函数 异常机制与析构函数 noexcept 修饰符与noexcept 操作符 异常处理的性能分析 C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异 常对象。异常事件发生时,程序使用throw 关键字抛出异常表达式,抛出点称为异常出现点, 由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在包含了异常出 现点的最内层的try 块,依次匹配catch 语句中的异常对象(只进行类型匹配,catch 参数有 时在catch 语句中并不会使用到)。若匹配成功,则执行catch 块内的异常处理语句,然后接 着执行try...catch...块之后的代码。如果在当前的try...catch...块内找不到匹配该异常对 象的catch 语句,则由更外层的try...catch...块来处理该异常;如果当前函数内所有的 try...catch...块都不能匹配该异常,则递归回退到调用栈的上一层去处理该异常。如果一直退 到主函数main()都不能处理该异常,则调用系统函数terminate()终止程序。 一个最简单的try...catch...的例子如下所示。我们有个程序用来记班级学生考试成绩,考试成 绩分数的范围在0-100 之间,不在此范围内视为数据异常: int main () { int score=0; while (cin score) { try { if (score 100 || score 0) { throw score; } //将分数写入文件或进行其他操作 } catch (int score) { cerr 你输入的分数数值有问题,请重新输入!; continue; } } } throw 关键字 在上面这个示例中,throw 是个关键字,与抛出表达式构成了throw 语句。其语法为: throw 表达式; throw 语句必须包含在try 块中,也可以是被包含在调用栈的外层函数的try 块中,如: //示例代码:throw 包含在外层函数的try 块中 void registerScore (int score) { if (score 100 || score 0) throw score; //throw 语句被包含在外层main 的try 语句块中 //将分数写入文件或进行其他操作 } int main () { int score=0; while (cin score) { try { registerScore(score); } catch (int score) { cerr 你输入的分数数值有问题,请重新输入!; continue; } } } 执行throw 语句时,throw 表达式将作为对象被复制构造为一个新的对象,称为异常对象。异 常对象放在内存的特殊位置,该位置既不是栈也不是堆,在window 上是放在线程信息块TIB 中。这个构造出来的新对象与本级的try 所对应的catch 语句进行类型匹配,类型匹配的原则 在下面介绍。 在本例中,依据score 构造出来的对象类型为int,与catch(int score)匹配上,程序控制权 转交到catch 的语句块,进行异常处理代码的执行。如果在本函数内与catch 语句的类型匹配 不成功,则在调用栈的外层函数继续匹配,如此递归执行直到匹配上catch 语句,或者直到 main 函数都没匹配上而调用系统函数terminate()终止程序。 当执行一个throw 语句时,跟在th
您可能关注的文档
- 郑成河 指弹 吉他谱 Merry go round.pdf
- 能耗标准Regulation EU 2015_1095 englich version.pdf
- 为什么选用Double-Take.pdf
- J2EE项目异常处理.pdf
- 喷雾干燥法制备微胶囊方法.pdf
- 新视野大学英语第三版第二册课文语法讲解 Unit3.pdf
- IntelliPlatform产品介绍.pdf
- 新视野大学英语第三版第二册课文语法讲解 Unit4.pdf
- Java表类的实现:ArrayList、SingleLinkedList、DoubleLinkedList.pdf
- A Study on the Role of Government in China’s Tourism Development.pdf
最近下载
- (2025秋新版)部编版二年级语文上册《 语文园地二》PPT课件.pptx VIP
- 安利纽崔莱营养大全-体系统.ppt
- 2025年城市共享电单车停放秩序监管平台建设方案.docx
- 电大《学前儿童卫生与保健》课程实践一:对自己的一餐进行展示和营养分析 .doc VIP
- 新职业英语基础篇_第三版_VR版_职业综合英语1_课后习题答案.pdf
- 家庭光伏发电项目可行性研究报告建议书.doc VIP
- 2025年内蒙古公务员考试《申论》真题试卷 .pdf VIP
- (正式版)J-C∕T 60022-2024 陶粒窑协同处置固体废物技术规范.docx VIP
- 社会主义发展简史课件_空想社会主义的产生和发展.pptx VIP
- 【监察法题库】《中华人民共和国监察法》知识竞答试题及答案.doc VIP
文档评论(0)