C-面向对象程序设计课件-第8章(未讲).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C-面向对象程序设计课件-第8章(未讲).ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课件
- 资源描述:
-
1、第8章 异常处理面向对象技术与Visual C+-第8章2本章主要内容异常处理概述异常处理概述 异常处理的语法异常处理的语法应用实例应用实例面向对象技术与Visual C+-第8章3异常处理概述异常处理概述 异常处理是由程序设计语言提供的运行时刻错误处理异常处理是由程序设计语言提供的运行时刻错误处理的一种方式。的一种方式。程序运行中的有些错误是可以预料但不可避免的,这程序运行中的有些错误是可以预料但不可避免的,这是要力争做到允许用户排除环境错误,继续运行程序;是要力争做到允许用户排除环境错误,继续运行程序;至少要给出适当的提示信息。至少要给出适当的提示信息。传统错误处理方法大致可以分为传统错误
2、处理方法大致可以分为返回码机制返回码机制和和全局变全局变量量两种。两种。面向对象技术与Visual C+-第8章41.1.返回码机制返回码机制 这种处理错误的方法比较实用和简单,这也是经常采取这种处理错误的方法比较实用和简单,这也是经常采取的手段之一。对于小型的程序来说这种异常处理机制的缺点的手段之一。对于小型的程序来说这种异常处理机制的缺点暴露不明显,对于一个需要多人开发的软件程序来说,它的暴露不明显,对于一个需要多人开发的软件程序来说,它的弊端就非常明显!弊端就非常明显!因为对于一个模块的实现者来说有的人返回值因为对于一个模块的实现者来说有的人返回值0 0代表错误;代表错误;有的人返回值有
3、的人返回值0 0代表正确,非代表正确,非0 0代表错误。解决方法可以用一代表错误。解决方法可以用一致性的条文来控制。通常的,这些返回码就在一个公共的致性的条文来控制。通常的,这些返回码就在一个公共的.h.h文件中以宏的形式存在。这样暂时解决了团队之间的一致性,文件中以宏的形式存在。这样暂时解决了团队之间的一致性,但是这些都但是这些都不是标准,兼容性太差不是标准,兼容性太差。对于如此多的返回码要。对于如此多的返回码要分别解释各自的意义,从调用者的角度来说,需要分别对返分别解释各自的意义,从调用者的角度来说,需要分别对返回码进行检查来处理异常,这样的代码往往就显得非常的臃回码进行检查来处理异常,这
4、样的代码往往就显得非常的臃肿,大大降低了可读性。肿,大大降低了可读性。面向对象技术与Visual C+-第8章52.全局变量全局变量 通过用一个全局变量来表示一次操作是否成通过用一个全局变量来表示一次操作是否成功。这个方法在多线程中就非常头痛。另外在功。这个方法在多线程中就非常头痛。另外在每次处理完异常之后就要复位这个变量,如果每次处理完异常之后就要复位这个变量,如果忘记这个步骤,就会引起其他操作的误解。忘记这个步骤,就会引起其他操作的误解。面向对象技术与Visual C+-第8章6异常处理实现异常处理实现 C+语言提供对处理异常情况的内部支持。语言提供对处理异常情况的内部支持。try,thr
5、ow和和catch语句就是语句就是C+语言中用于实现语言中用于实现异常处理的机制。异常处理的机制。有了有了C+异常处理,程序可以向更高的执行上异常处理,程序可以向更高的执行上下文传递意想不到的事件,从而使程序能更好下文传递意想不到的事件,从而使程序能更好地从这些异常事件中恢复过来。地从这些异常事件中恢复过来。面向对象技术与Visual C+-第8章7例例8-2 示例使用异常处理来处理错误。示例使用异常处理来处理错误。#include void main()int divisor,dividend;double quotient;try /异常测试块定义异常测试块定义coutdividend;c
6、outdivisor;if(divisor=0)throw dividend;/抛出异常抛出异常quotient=dividend/double(divisor);coutThe result is:quotientendl;面向对象技术与Visual C+-第8章8catch(int)/捕获异常捕获异常 coutThe divisor is zero,worry!endl;coutEnd of program.endl;面向对象技术与Visual C+-第8章9异常处理的语法异常处理的语法 try-throw-catch是抛出和捕获异常的基本机制。是抛出和捕获异常的基本机制。Throw语句抛
7、出异常(一个值),语句抛出异常(一个值),catch捕获异常。捕获异常。抛出一个异常后,抛出一个异常后,try块会终止,转而执行块会终止,转而执行catch块中的语句。块中的语句。catch块结束之后,会继续执行块结束之后,会继续执行catch块之后的语块之后的语句(前提是句(前提是catch块中没有终止程序或者执行另外块中没有终止程序或者执行另外一些特殊的操作)。一些特殊的操作)。如果如果try块中没有抛出异常,那么在块中没有抛出异常,那么在try块结束之后,块结束之后,程序将从程序将从catch块之后的语句继续执行。换言之,块之后的语句继续执行。换言之,如果没有抛出异常,如果没有抛出异常,
8、catch块会被忽略。块会被忽略。面向对象技术与Visual C+-第8章10try块块 如果在函数内直接用如果在函数内直接用throw抛出一个异常(或在函抛出一个异常(或在函数调用时抛出一个异常),将在异常抛出时退出数调用时抛出一个异常),将在异常抛出时退出函数。如果不想在异常抛出时退出函数,可以在函数。如果不想在异常抛出时退出函数,可以在函数体内创建一个特殊块用于解决程序中潜在的函数体内创建一个特殊块用于解决程序中潜在的错误,在这个块中可以测试各种错误发生的可能错误,在这个块中可以测试各种错误发生的可能性,通常称为测试块,它由关键字性,通常称为测试块,它由关键字try引导。引导。其定义格式
9、如下:其定义格式如下:try 面向对象技术与Visual C+-第8章11抛出异常抛出异常 通常将抛出的值直接称为一个异常,所以执行通常将抛出的值直接称为一个异常,所以执行throw语句就称为抛出异常,可以抛出任意类语句就称为抛出异常,可以抛出任意类型的一个值。型的一个值。其定义的格式如下:其定义的格式如下:throw 执行执行throw语句时,外围的语句时,外围的try块就会停止执行。块就会停止执行。如果如果try块之后跟有一个合适的块之后跟有一个合适的catch块,那么块,那么控制权就会转交给那个控制权就会转交给那个catch块。一般说来,块。一般说来,throw语句几乎肯定要嵌入一个分支
10、语句(比语句几乎肯定要嵌入一个分支语句(比如如if语句)中语句)中。面向对象技术与Visual C+-第8章12捕获异常捕获异常 抛出一个异常后,外围的抛出一个异常后,外围的try块会停止执行,并块会停止执行,并开始执行另一个部分的语句,也就是开始执行另一个部分的语句,也就是catch块。块。执行执行catch的过程称为捕获异常或者异常处理。的过程称为捕获异常或者异常处理。一个异常被抛出以后,最终应该由某个一个异常被抛出以后,最终应该由某个catch块来处理。块来处理。面向对象技术与Visual C+-第8章13 一般说来,一般说来,catch块参数主要完成两件事情:块参数主要完成两件事情:q
11、catch块参数前要加一个类型名,表示块参数前要加一个类型名,表示catch块块可以捕获什么类型的异常抛出值;可以捕获什么类型的异常抛出值;qcatch块参数为捕获的异常抛出值指定了一个名块参数为捕获的异常抛出值指定了一个名称,所以在称,所以在catch块中,又可以对这个异常抛出块中,又可以对这个异常抛出值进行相应的处理。值进行相应的处理。面向对象技术与Visual C+-第8章14 catch块的语法定义如下:块的语法定义如下:catch(type_name variable_name)需要注意的是,如果需要注意的是,如果try块中没有异常被抛出,块中没有异常被抛出,那么在那么在try块正常
展开阅读全文