《高级语言c++程序设计(第二版)》第十二章 异常处理new

《高级语言c++程序设计(第二版)》第十二章 异常处理new

ID:34454335

大小:31.13 KB

页数:9页

时间:2019-03-06

《高级语言c++程序设计(第二版)》第十二章 异常处理new_第1页
《高级语言c++程序设计(第二版)》第十二章 异常处理new_第2页
《高级语言c++程序设计(第二版)》第十二章 异常处理new_第3页
《高级语言c++程序设计(第二版)》第十二章 异常处理new_第4页
《高级语言c++程序设计(第二版)》第十二章 异常处理new_第5页
资源描述:

《《高级语言c++程序设计(第二版)》第十二章 异常处理new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、*第十二章异常处理12.1异常处理的基本思想以及C++实现程序运行中的某些错误(或意外情况)不可避免但可以预料。如,做除法或模运算时使用的分母y为0,程序中可通过添加如下形式的测试语句来判断是否出现了这种意外情况(即异常),“if(y==0){cout<<"Erroroccuring--Dividedby0!";exit(1);}”,若出现的话,则用户程序将进行干预,比如先在屏幕上给出适当的错误提示信息,而后退出程序停止运行等。这实际上已经是在做异常处理的工作了,读者从前面章节的某些例题中可能早就

2、注意到了这种对异常(或错误)的程序处理方式。实际上,C++还提供更方便的对异常进行处理的机制,那就是在程序中使用try、catch和throw。请看如下程序,其中使用了try、catch和throw来对除以0或模0所产生的异常进行处理。程序要求输入两个整数i1、i2以及一个运算符op(“/”或者“%”),而后进行相应运算并对所出现的异常进行处理。//program12_1.cpp#includevoidmain(){try{//try程序块为“受监控”的块,块中所抛掷的异常

3、//将被本try块后的某一个catch块所捕获并处理inti1,i2;charop;cout<<"InputI1I2OP:";cin>>i1>>i2>>op;//输入两个整数i1、i2以及一个运算符opif(op=='/'){if(i2==0)//分母为0时,抛掷一个字符串—char*类型的异常throw"Dividedby0!";//所抛掷的异常将被随后的catch块捕获并处理cout<

5、"Erroroccuring--"<

6、ction!第二次执行:InputI1I2OP:330/Erroroccuring--Dividedby0!Endmainfunction!注意,通过throw抛掷异常后,系统将跳转到与所抛掷的实参(表达式)类型完全匹配的那一个catch块去执行,而执行完catch块后将不再返回,继而转到catch块序列的最后一个catch块的“下一语句”处去执行。对实际问题进行处理的程序中,还会碰到多种多样的产生异常(或错误)的情况,如,磁盘中的文件被移动或缺少所需文件时将导致无法打开文件,内存不足致使通过ne

7、w无法获取到所需要的动态空间,用户提供了不恰当的输入数据等。为使程序具有更好的容错能力并体现出程序的健壮性,设计程序时,应该充分考虑程序执行过程中可能发生的各种意外情况(即异常),并对它们进行恰当的处理。即是说,当异常出现后,要尽可能地让用户程序来进行干预,排除错误(至少给出适当的错误提示信息),而后继续运行程序。下面对try、catch和throw的功能及其使用注意点做进一步的说明。通过try可构成所谓的try块,用于标记运行时可能出现异常的程序代码。即是说,try程序块在运行时将成为“受监控”

8、的代码块,其中所抛掷的任何异常(包括在try块中直接抛掷的异常、以及通过所调用的“下层”函数而间接抛掷的各种异常)都将被捕获并处理(注意,抛掷异常是通过throw语句来完成的)。try块的使用格式如下:try{<“受监控”的语句序列(通常包含抛掷异常的throw语句)>}通过catch可构成所谓的catch块,它紧跟在try块的后面,用于监视并捕获运行时可能出现的某一种类(类型)的异常并对此种异常进行具体的处理(处理程序代码包含在catch块之中)。即是说,catch程序块将监视并

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

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

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