面向对象程序设计第十二章异常处理机制.ppt
《面向对象程序设计第十二章异常处理机制.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计第十二章异常处理机制.ppt(31页珍藏版)》请在三一办公上搜索。
1、第10章 异常处理机制,本章主要内容:,异常处理的任务与思想 异常处理的实现 异常处理的应用 异常处理中的构造与析构 C+标准异常类,10.1 异常处理的任务与思想,软件不仅要保证能正确完成任务,还应当具有良好的容错性。容错性是指软件不仅在正确操作的条件下能正确运行,而且当环境异常或不当使用时,依然能合理处理运行过程中的出现的各种异常,而不会产生各种意想不到的后果。程序中的各种异常通过分析完全可以预料。根据异常的不同情况进行对异常进行处理,如给出提示信息、允许用户排除环境错误、继续运行程序等都是异常处理的基本任务。,1.传统的异常处理方法,传统程序设计方法中,通常采用系统提供的中断函数或指令。
2、当被调用函数发生异常或产生错误时,返回一个特定的值,以便调用函数检测错误标志,并作出处理;或当错误产生时,释放所有资源,结束程序运行,常用中断函数或指令,#include double div(double,double);void main()double x,y;couty;coutx;if(x=0)coutDivided by zero,Error!endl;else coutq=div(x,y)endl;coutEnd of the program.endl;double div(double x,double y)return y/x;,传统异常处理方法的优点是异常处理直接,系统运行
3、开销少,适用于处理简单的局部错误与异常。不足之处是异常处理代码分布于程序中可能出错的各个地方,异常处理代码与系统功能实现代码混在一起,降低程序的可读性与可维护性,不适合大型软件的开发,也不符合现代软件工程的理念,2.C+异常处理机制,在大型软件中,由于函数之间具有各自明确的分工并可能存在调用关系,发生错误的函数可能不便于或不具备处理错误的条件。C+异常处理机制的基本思想是将异常检测与异常处理分离。产生异常的函数不一定需要具备异常处理的能力,当一个函数发生异常时,它抛出所发生的异常或错误,由调用者捕获或处理异常,若上层调用函数仍不便于处理异常,还可以进一步抛出异常,按调用层次关系传递给更上一层处
4、理。,2.C+异常处理机制,10.2 C+异常处理的实现,C+语言提供了对异常处理机制的内部支持由try、throw和catch语句提供了C+用于实现异常处理的机制。在异常处理机制的支持下,可以更合理、更有效的处理程序运行过程中存在的各种异常现象。,1.异常处理的语法,try-throw-catch是C+异常处理机制的实现语句;程序中可能产生异常的部分应包含于try块之中;异常由紧随其后的catch语句捕获和处理;throw语句的作用是抛出异常。,异常处理程序的使用形式,try语句块实际上是程序代码的保护段,表明该程序段在执行过程中可能会产生异常或出现错误;若预料某段程序代码或某个函数可能发生
5、异常或错误,就应当将之置于try语句块之内;一旦该代码段或函数在调用过程中产生了异常情况,throw语句将抛出这个异常,并通过throw之后的表达式返回一个值;,有关说明,当函数出现了自己不能处理的异常,就可以使用“throw 表达式”将异常抛出;throw之后的“表达式”表示异常类型,它在语法上与return语句的“表达式”值类似;throw语句表达式的值不能用来区分不同异常,所以当程序将要抛出多个异常,应该用不同类型的表达式值相互区别;,有关说明(续),catch语句块是异常处理的程序代码,捕获和处理由“throw 表达式”所抛出的异常。catch 之后的异常类型可以是任何有效的数据类型,
6、它与函数的形参类似,既可以是 int、float等某个类型值,也可以是引用及C+的类,它用于指定catch语句块所处理的异常的类型;当异常被抛出后,catch块依次被检查,若某catch语句块的异常类型与被抛出的异常类型一致,则执行该异常处理程序段。,有关说明(续),在一个try语句块内,异常处理程序将按照它出现的位置先后顺序进行检查。若找到一个匹配的异常类型,后面的异常处理都将被忽略;如果异常类型声明是一个省略号(),则表示catch语句可以处理任何类型的异常;类型为省略号的catch处理程序必须是try块的最后一段处理程序。,有关说明(续),double div(double x,doub
7、le y)if(x=0)throw y;/若x=0时,抛出异常return y/x;,#include double div(double,double);void main()double x,y;try/try语句块couty;coutx;coutq=div(x,y)endl;catch(double)/捕获异常coutDivided by zero,Error!endl;coutEnd of the program.endl;,异常处理的执行过程,通过正常的执行顺序直到try语句,然后执行try块内的保护段。若保护段在执行期间没有产生异常,则try语句块后的catch块不会被执行,程序从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 第十二 异常 处理 机制
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6613310.html