- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unit10异常处理2课件
第12章 异常处理 STL 提供的标准Exceptions C++的标准库提供了一个异常类的层次结构,在预定义的异常层次结构中,错误被分成两类:一是逻辑错误,由于程序内部逻辑而导致的错误,二是运行时错误,由于程序之外的某种事件而导致的错误 STL 提供的标准Exceptions 12.2.2 多路捕获 当C++异常处理语句格式中 n大于1时, 就构成多路捕获结构。多路捕获使得程序在出现一个异常时,可以由相应的处理程序进行有针对性的处理。多路捕获的异常处理比单路捕获更灵活,适用面更广. 多路捕获的一般规则: (1) 如果try块中的一个语句或者在try 块的一个被调函数中的一个语句抛出一个异常,在沿着调用返回时该异常到达第一个catch语句,逐个查看每个catch语句处理程序,根据被抛对象,找出匹配。注意,处理程序有一定的先后顺序。 注意: catch(...){ } 捕获任何类型的异常 多路捕获的一般规则: (2) 如果找到一个匹配,就执行匹配的处理程序代码。如果没有找到匹配,则检查下一个catch语句, 若所有的catch语句都找完了,还没有找到匹配的catch语句,就由调 用系统函数terminate()终止调用,后者按常规再调用abort0。 * * C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制. C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句、函数结构和类,致使编译程序无法进行。另一种是运行时发生的错误,一般与算法有关。 关于语法错误, C++编译器的报错机制可以让我们轻松地解决这些错误; 第二种是运行时的错误,常见的有文件打开失败、数组下标溢出、系统内存不足等等。而一旦出现这些问题,引发算法失效、程序运行时无故停止等故障也是常有的。这就要求我们在设计软件算法时要全面。比如针对文件打开失败的情况,保护的方法有很多种,最简单的就是使用“return”命令,告诉上层调用者函数执行失败;另外一种处理策略就是利用c++的异常机制,抛出异常。 通过这里例子引出传统的程序运行是错误处理方式, 即if判断 然后返回,程序结束。 传统的异常处理方式很不灵活,也不方便。 一个大的系统那个中,包含许多模块,每个模块又包含很多函数,函数之间又相互调用,比较复杂。如果在每一个函数中都设置处理异常的程序段,会使程序过于复杂和庞大。 因此,如果在执行一个函数过程中,出现异常,可以不在本函数中立即处理,而是抛出一个异常,传给它的上一级(即调用它的函数),它的上级可以选择处理该异常,或者再往它的上级传递,如此逐级上升,如果最高一级还是无法处理,就调用系统函数terminate,使程序终止运行。 在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。 本章重点语法 通过这个例子讲解 try throw and catch 如何工作 catch 只能跟在try后面 catch 语法 注意和对象声明区别和联系 异常抛出后的处理机制 异常(exception)——程序运行期出现的问题或错误。 异常处理——结构化的处理异常的方法,在有可能发生异常的地方做出预见性的安排。 代码有问题吗?如果有怎样去处理 非结构化异常处理: 用 exit (n) 或 return (n)的运行期错误处理机制,具有“一个入口,多个出口”的特点。 结构化的异常处理: 积极的运行期问题处理机制。当异常出现后,可按“警告—忽略”、“对话—补救”或安全退出等模式,使程序可以在对运行条件做出适当安排或改善后继续运行下去。 12. 1 异常处理的基本语法 C++的异常处理的基本思想是将异常的检测与处理分离。 在一个函数体中检测到异常条件满足,但无法确定相应的处理方法时,就引发一个异常,然后由函数的直接或间接调用者处理此异常。 C++的异常处理建立在三个关键字基础之上: try 、catch和throw。 C++异常处理语句的一般形式如下: try{ //try 块内监视异常 if (条件)throw exception; //由throw 抛出异常 …; //其它语句 } catch( 类型1 参数1 ){ //catch块内处理代码 } catch( 类型2 参数2 ){ …; } …… catch( 类型n
您可能关注的文档
- UG实体建模课件.ppt
- UIRobot培训-----第一课课件.ppt
- UG软件应用9装配课件.ppt
- UG特征操作课件.ppt
- UG软件应用7特征建模回转课件.ppt
- UML_建模案例_3_-_会议管理系统课件.ppt
- 盾构施工主要技术环节与流程详解.ppt
- UML-CHP06_活动图课件.ppt
- UML复习题新--答案课件.doc
- UG高级应用技巧课件.ppt
- 语文阅读理解答题技巧总结.doc
- 2025年新能源汽车关键零部件制造技术突破及产业布局策略研究报告.docx
- 2025年新能源汽车电池回收利用产业技术创新与产业链融合趋势分析报告.docx
- 2024-2025学年江苏省苏州市七年级上学期数学期中模拟卷及答案(二).pdf
- 2025年新能源汽车电池回收利用产业链上下游企业合作模式分析报告.docx
- 2025年新能源汽车电池回收利用商业模式与盈利模式研究报告.docx
- 2025年新能源汽车电池回收利用产业投资热点与风险预警报告.docx
- 2025年新能源汽车电池回收利用产业链产业链产业链发展报告.docx
- 2025年新能源产业绿色经济政策与碳排放权交易市场研究.docx
- 2023年中铁城建集团有限公司公开招聘系统设计和开发人员笔试参考题库附带答案详解.doc
文档评论(0)