- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 异常处理 9.1 异常处理的基本思想 9.2 异常处理的实现 9.3 定义自己的异常类 9.4 异常的逐层传递 9.5 异常处理中的构造与析构 9.6 应用实例 9.1 异常处理的基本思想 9.1.1 异常处理的概念 9.1.2 异常处理的基本思想 9.1.1 异常处理的概念 9.1.1 异常处理的概念 9.1.2 异常处理的基本思想 9.1.2 异常处理的基本思想 9.2 异常处理的实现 9.2.1 异常处理的语法 9.2.2 异常处理的执行过程 9.2.3 异常接口声明 9.2.4 标准库的异常处理 9.2.1 异常处理的语法 9.2.1 异常处理的语法 9.2.1 异常处理的语法 9.2.2 异常处理的执行过程 9.2.2 异常处理的执行过程 9.2.3 异常接口声明 9.2.3 异常接口声明 9.2.3 异常接口声明 9.2.3 异常接口声明 9.2.3 异常接口声明 9.2.4 标准库的异常处理 9.3 定义自己的异常类 9.4 异常的逐层传递 9.5 异常处理中的构造与析构 9.6 应用实例 9.6 应用实例 9.6 应用实例 第9章 异常处理 * 程序的错误有两种: 编译错误,即语法错误 在运行时发生的错误,它分为不可预料的逻辑错误和可以预料的运行异常 【例9.1】示例不使用异常处理来处理错误。 对于大型程序来说,运行中一旦发生异常,应该允许恢复和继续运行。 恢复的过程就是把产生异常所造成的恶劣影响去掉,中间可能要涉及一系列的函数调用链的退栈,对象的析构,资源的释放等。 继续运行就是异常处理之后,在紧接着异常处理的代码区域中继续运行。 在函数k()中发生异常,处理异常的地方在其上层函数f()中,处理异常后,函数k()和g()都退栈,程序在函数f()中继续运行。 在C++中,异常是指从发生问题的代码区域传递到处理问题的代码区域的一个对象。见下图。 f() g() k() 产生异常 异常处理 继续运行 调用 调用 抛出异常 C++异常处理用到的关键字有try、throw和catch。 1.try块语法 try块的定义指示可能在这段程序的执行过程中发生错误,通常称为测试块。其语法格式如下: try { 复合语句 } 2.throw语法 如果某段程序中发现了自己不能处理的异常,就可以使用throw表达式抛掷这个异常,将它抛掷给调用者。throw语句的语法格式如下: throw 表达式 ; 其中表达式表示异常类型,可以是任意类型的一个对象,包括类对象。 3.catch块语法 由throw表达式抛掷的异常必须由紧跟其后的catch块捕获并处理。 catch(异常类型1参数1) { 处理异常1的复合语句} catch(异常类型2参数2) { 处理异常2的复合语句} … catch(异常类型n参数n) { 处理异常n的复合语句} catch(…) { 处理任意异常的复合语句} 正常程序块 try块 保护段 catch块 正常程序块 异常 查找匹配的 处理程序 terminate abort 无 有 有 无 【例9.2】示例使用异常处理来处理错误。 异常接口声明也称为抛出列表(throw list),已经成为函数界面的一部分。 它一方面显式地给出了一个函数抛出异常的界面,另一方面也限制了该函数抛出异常的类型。 1.指定异常 返回类型 funname (形参列表) throw(T1,T2,...,Tn); 该函数原型指定funname可以抛出的类型为T1,T2,...,Tn的异常,也可以抛出这些类型的子类型的异常。若在函数体内抛出其他类型的异常,调用函数无法捕获,系统将调用abort函数终止程序。 2.不抛出异常 返回类型 funname (形参列表) throw(); 函数原型的抛出列表是一个空表,表示该函数不抛出任何类型的异常。 3.抛出任意类型的异常 返回类型 funname (形参列表) 如果函数原型没有throw说明,表示该函数可以抛出任意类型的异常。 【例9.3】使用异常接口声明,进一步示例异常处理的实现过程。 exception logic_error runtime_error domain_error length_error out_of_range range_error overflow_error underflow_error invalid_argument 定义在头文件exception中 报告程序的逻辑错误,可在程序执行前被检测到。 报告程序
您可能关注的文档
最近下载
- 高电压技术赵智大第三版.pptx VIP
- 长江经济带发展战略(第1课时)示范公开课教学课件【高中地理必修第二册鲁教版(新课标)】.pptx VIP
- 2024上海全民国防教育知识线上答题活动题库及答案 .pdf VIP
- 管理会计学复习笔记.pdf VIP
- 11ZJ111 变形缝建筑构造(OCR).pdf VIP
- 粮油供货合同.docx VIP
- 网络安全协议分析与案例实践.ppt
- 1.《沁园春长沙 》课件(共49张PPT) 2024-2025学年统编版高中语文必修上册.pptx VIP
- 《口腔颌面外科学》课件——第三章 局麻并发症.pptx VIP
- 2025年入党积极分子培训班结业考试试题及答案.docx VIP
文档评论(0)