- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++面向对象程序设计 第9章 异常处理 9.1 异常处理的基本思想 9.2 C++异常处理的实现 9.3 异常处理中的构造与析构 9.1 异常处理的基本思想 计算机程序在机器上运行时会产生错误,这些错误对于编程人员可以预料到但却无法避免。 在一个小型程序中,一旦程序运行时发生了异常,一般是将程序立即中断运行,从而无条件释放所有资源。而在一个较为复杂的软件中,函数与函数之间存在着各自明确的功能和相互间复杂的调用关系,发现错误的函数又并不具备处理错误的能力。 9.1 异常处理的基本思想 C++的异常处理机制使得异常的引发和处理不需要在同一函数内完成,它可以将异常向上传播,这样底层的函数可以专门用以解决具体问题,而上层的调用者就可以在适当的位置针对不同类型的异常设计处理。 9.2 C++异常处理的实现 9.2.1 异常处理的机制 9.2.2 异常处理的规则 9.2.1 异常处理的机制 C++语言提供了对处理异常情况的内部支持。在C++语言中,try、throw和catch语句就是用于实现异常处理的机制。有了C++程序的异常处理机制,程序可以向更高的执行上下文传递意想不到的事件,使C++程序能更好地从各种异常事件中进行有效地恢复,从而更好地执行 9.2.1 异常处理的机制 异常处理的机制的主体有两大部分,一是错误侦测区块,二是错误处理区块。 9.2.1 异常处理的机制 9.2.1 异常处理的机制 try子句后的复合语句是代码的保护段。catch子句后的复合语句是用来处理异常的程序,处理由throw表达式抛掷的异常。 当错误侦测区块里的程序执行发生错误时,将会利用throw语句将异常类型抛出错误侦测区块,在对比catch语句中的异常类型后,寻找出并执行处理该异常类型的程序区块。当该区块执行完毕后,将继续执行catch语句后的程序。 9.2.1 异常处理的机制 9.2.1 异常处理的机制 9.2.2 异常处理的规则 9.2.2 异常处理的规则 9.2.2 异常处理的规则 例:处理除零异常 9.2.2 异常处理的规则 9.2.2 异常处理的规则 9.3 异常处理中的构造与析构 C++异常处理的功能较为完善,它不仅能够处理各种不同类型的异常,而且具有为异常抛掷前构造的所有局部对象自动调用析构函数的能力。 9.3 异常处理中的构造与析构 在一个程序中,找到一个匹配的catch异常处理后,如果catch子句的异常类型声明是一个值参数,那么在初始化时是赋值被抛掷的异常对象。如果catch子句的异常类型声明是一个引用,那么在初始化时是使该引用指向异常对象。 9.3 异常处理中的构造与析构 9.3 异常处理中的构造与析构 9.3 异常处理中的构造与析构 9.3 异常处理中的构造与析构 9.3 异常处理中的构造与析构 9.3 异常处理中的构造与析构 程序运行结果为: * try { //错误侦测区块 复合语句 throw 异常类型表达式; //如果发生错误用throw语句抛出异常 } catch(异常类型1) { //错误处理区块 复合语句 } catch(异常类型2) { //错误处理区块 复合语句 } …… catch(…) // 如果在前面并没有列举异常类型,则由此处理区块处理 { //错误处理区块 复合语句 } //try-throw-catch后继续执行 异常处理的执行过程分成以下几个步骤: 控制通过正常的顺序执行到达try语句,然后执行try块内的代码保护段。 如果在保护段执行期间没有引起异常,就不执行跟在try块后的catch子句,程序从异常被抛掷的try块后跟随的最后一个catch子句后面的语句继续执行下去。 如果在保护段执行期间或在保护段调用的任何函数中有异常被抛掷,则从通过throw操作数创建的对象中创建一个异常对象。 如果匹配的处理器未找到,则运行函数terminate将被自动调用,而函数terminate的默认功能是调用abort终止程序。 如果找到了一个匹配的catch处理程序,且它通过值进行捕获,则其行参通过拷贝异常对象进行初始化。 编写异常处理程序的规则是: 如果预料某段程序代码(或对某个函数的调用)有可能发生异常,就将它放在try子句之后。 如果某段程序中出现了自己不能处理的异常,就可以使用throw语句来抛掷出这个异常,将它抛掷给调用者。 catch子句后的复合语句用来处理由throw表达式抛掷的异常。 当异常被抛掷以后,catch子句便依次被检查,若某个catch子句的异常类型声明与被抛掷的异常类型一致,则执行该段异常处理程序。 #include
您可能关注的文档
- AutoCAD制图辅助设计案例教程 王秀丽 第九章新.ppt
- AutoCAD制图辅助设计案例教程 王秀丽 第三章新.ppt
- AutoCAD制图辅助设计案例教程 王秀丽 第十三章新.ppt
- AutoCAD制图辅助设计案例教程 王秀丽 第十四章新.ppt
- AutoCAD制图辅助设计案例教程 王秀丽 第十一章新.ppt
- AutoCAD制图辅助设计案例教程 王秀丽 第一章新.ppt
- C# WinForm实践开发教程 钱哨 chp3.文件处理新.ppt
- C# WinForm实践开发教程 钱哨 chp5.多线程编程技术新.ppt
- C# WinForm实践开发教程 钱哨 chp6.数据库设计与开发新.ppt
- C# WinForm实践开发教程 钱哨 chp7.WinForms网络编程 新.ppt
- 深入剖析2025年模具行业数字化设计仿真技术应用与实施路径报告.docx
- 农村电商行业数字化转型升级与市场拓展报告.docx
- 2025年交通运输行业数字化技术应用与商业模式创新报告.docx
- 农村电商行业竞争格局与2025年市场拓展机遇报告.docx
- 2025年智能家居语音交互系统在智能家居家庭娱乐场景下的互动体验报告.docx
- 2025年食品添加剂在食品添加剂行业市场营销中的安全性评估与使用报告.docx
- 2025年产业转移园区建设风险预警与社会稳定性保障方案.docx
- 农村电商行业现状调研报告:2025年新模式与机遇分析.docx
- 2025年在线医疗咨询用户问诊信任度分析:医生资质评估与问诊体验优化建议分析.docx
- 人工智能在金融客户服务个性化推荐中的应用,2025年市场前景趋势分析.docx
文档评论(0)