C++程序设计--异常处理及命名空间(第5章).ppt

C++程序设计--异常处理及命名空间(第5章).ppt

ID:48045204

大小:464.50 KB

页数:27页

时间:2020-01-13

C++程序设计--异常处理及命名空间(第5章).ppt_第1页
C++程序设计--异常处理及命名空间(第5章).ppt_第2页
C++程序设计--异常处理及命名空间(第5章).ppt_第3页
C++程序设计--异常处理及命名空间(第5章).ppt_第4页
C++程序设计--异常处理及命名空间(第5章).ppt_第5页
资源描述:

《C++程序设计--异常处理及命名空间(第5章).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C/C++程序设计教程郑秋生主编2021/7/232第5章异常处理及命名空间本章学习重点掌握内容:异常的概念、异常的产生异常的处理机制throw、try和catch的用法命名空间的概念及使用2021/7/233第5章异常处理及命名空间5.1异常处理5.2命名空间5.1异常处理5.1.1异常的概念程序需要在各种不同环境下使用时,需要考虑在这些异常情况下程序的响应能力。所谓异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况,它要求程序立即进行处理,否则将会引起程序错误甚至崩溃的现象。2021/7/2345

2、.1异常处理5.1.2异常处理机制C++采用机制是,当本函数运行出现异常时,可以不在本函数处理,而是发出异常信息(抛出异常);调用者可以捕捉到这一个信息(捕获异常),根据对应的出错信息进行相应的处理(处理异常);或向更上一层调用发出异常信息(再次抛出异常)。C++引入了3个关键字try(检查异常),throw(抛出异常)和catch(捕获异常),用于进行异常处理。首先,程序员将一组有可能引起异常的语句放在try块中,当程序执行过程中,如果遇到错误,它就通过throw语句抛出一个异常。而catch块用来捕捉异常,并进行相应的处理。2021/7/235【例5.1】抛出

3、异常到处理异常的过程#includeusingnamespacestd;doubledivide(doublex1,doublex2){//输入偶数,否则产生异常if(x2==0)throw"除数为0,无法计算!";//抛出异常returnx1/x2;//程序其它部分}2021/7/236intmain(){doublex1,x2,dRet;boolbRet=true;cout<<“请输入两个数:”;cin>>x1>>x2;try{dRet=divide(x1,x2);//divide可能抛出异常}catch(char*message)//捕获

4、异常{bRet=false;cout<

5、数出现异常时,catch块中获得异常的信息。2.try块和catch块作为一个整体出现,且catch必须紧跟在try块之后,中间不能插入其他语句。3.try块可以单独出现,而无catch块,表示无论是否有异常都不进行处理。4.一个try-catch结构中,只能有一个try块,可以有多个catch块,每个catch块的异常信息必须是不同的数据类型,以使和不同异常信息匹配。2021/7/238异常语法说明-26.try-catch结构可以和throw出现在同一函数中,这时throw抛出异常后,catch首先和匹配本函数的抛出的异常,如果匹配则由本函数catch捕获否则

6、,由上一层函数处理。7.throw可以不包含参数,用于catch捕获后再原样抛出,由上一层处理。8.异常信息假如没有被捕捉则异常会发生。如上述例题例5.1,没有捕获异常则0作为除数相除,引起系统崩溃。9.在异常处理过程中也可能存在“单个catch子句不能完全处理这个异常”的情况。那么该异常处理器在做完局部能够做的事情后,会再一次抛出这个异常,让更一层函数处理,也就是重新抛出。2021/7/239异常语法说明-311.throw抛出的可以是一个常量,也可以是一个变量。关键字throw还可以灵活地放到很多地方,只要try块中的语句能直接或间接地执行到它。12.如果ca

7、tch中处理程序执行完毕,而无返回或终止指令,将跳过后面的catch块继续执行程序。13.catch在比较类型匹配时并不需要完全相同。被throw抛出的异常的数据类型与catch处理程序的参数类型进行匹配的过程,由精确匹配和自动数据类型转换的匹配组成。2021/7/2310两者类型匹配说明catch的参数类型与抛出异常严格匹配;catch的参数类型是被抛出异常所在类的公有基类;catch的参数类型是指向基类的指针2021/7/2311【例5.2】重新抛出捕捉异常的例题。#includeusingnamespacestd;voidfun2(int

8、x){th

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。