C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt

C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt

ID:50041223

大小:555.00 KB

页数:45页

时间:2020-03-08

C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt_第1页
C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt_第2页
C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt_第3页
C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt_第4页
C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt_第5页
资源描述:

《C++程序设计 教学课件 作者 郑莉第15章 异常处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第15章异常处理清华大学郑莉2目录15.1异常处理的基本思想15.2C++异常处理的实现15.3异常处理中的构造与析构15.4标准程序库异常处理3第15章异常处理在编写应用软件的时候,首先要考虑程序的正确性,即保证程序能够在正确的环境条件和正确的用户操作下可以得到正确的运行结果。但是仅仅保证了程序的正确性,这个软件还是不能简单交付使用的。还必须要考虑程序的健壮性,或称为鲁棒性。4第15章异常处理程序的健壮性是指,当环境条件发生异常时,或者用户没有遵循正确的操作方法时,程序也必须给出一个合理的响应。要保证程序的健壮性,就要求在进行程序设计预先充分的考虑到各种可能发生的意外情况,并在

2、程序中给出适当的处理。这其中用到的技术就是本章要给大家介绍的异常处理。515.1异常处理的基本思想在编写程序时,有些错误是无法预料的或者发生后在程序中无法解决的。例如内存空间不足、磁盘上文件的位置移动、硬件设备的连接错误等这些由系统运行环境造成的错误。异常处理的目的是在无法解决的错误发生时,尽量帮助用户使其可以排除环境错误,使程序可以继续运行;如果这一点也做不到,至少要保证程序可以安全终止,并给出合理的提示信息,以便用户排查故障之用。第15章异常处理615.1异常处理的基本思想在实际的大型软件中,某个函数可能出现了错误并可能没有能力解决。此时,可以让这个函数抛出一个异常,并希望调用

3、它的函数或程序段能够捕捉到这个异常,进而处理这个异常中包含的错误。如果这个调用者可能也没有能力解决这个错误,它就将这个错误继续传递给上一级调用者。这个过程不断重复,直到这个异常中包含的错误被解决为止。如果这个异常最终就会被送到C++运行系统处,一般而言它会终止这个程序的运行以防止错误带来更大的后果。上述方法就是异常处理的基本思想。第15章异常处理715.1异常处理的基本思想在这种基本思想下,C++语言的异常处理机制就使得异常的产生与解决可以在不同的函数中解决。其好处是:底层的函数可以专注于解决具体的计算问题,而将异常更多的交给调用级的函数来处理;而调用级的函数由于能够把握一个局部的

4、架构,它可以在恰当的位置对不同类型的异常分别进行处理。第15章异常处理815.2C++异常处理的实现C++语言直接为异常处理提供了内部支持,它提供了三个语句:try、throw和catch来完成异常处理机制的实现。通过使用这三个语句,就可以将底层函数产生的异常向上传递,直到它能在合适的地方得以解决,使程序可以更快更好的从异常中恢复。第15章异常处理915.2.1异常处理的语法三个用于异常处理的语句一般被分为两个部分来使用。第一部分是抛出异常,使用的是throw语句,其语法格式如下:当一段程序发现了它无法自己解决的异常时,通过throw语句将异常抛出,抛掷给该程序段的调用者15.2C

5、++异常处理的实现throw表达式;1015.2.1异常处理的语法使用throw语句需要注意的是:throw语句中的表达式的数据类型就代表了异常的类型,它在语法的感觉上很类似于return语句的返回表达式。因此,我们无法使用表达式的值来区分异常类型,当需要在一段程序中抛出多个异常时,必须使用不同数据类型的表达式。15.2C++异常处理的实现1115.2.1异常处理的语法使用throw语句抛出的异常必须由调用者捕获,调用者通过try语句块来捕获异常。try语句的语法格式如下:15.2C++异常处理的实现1215.2.1异常处理的语法try{保护程序段}catch(异常类型声明){处理

6、程序段}catch(异常类型声明){处理程序段}……1315.2.1异常处理的语法在编写程序时,如果预料到某段程序段或者对某个函数的调用有产生异常的可能,就可以将它们放在try子句之中,作为保护程序段出现。被保护的程序段中或被调用的函数中必须有能够抛出异常的throw语句,否则无法起到保护作用。如果上述条件都满足,当在程序运行的过程中保护程序段或函数调用确实产生异常时,保护程序段或被调函数中的throw语句就会将异常抛出。15.2C++异常处理的实现1415.2.1异常处理的语法捕获异常当异常被抛出后,紧随其后的catch子句就会捕捉try子句中抛出的异常,并且判断是否调用后面的处

7、理程序段进行异常处理。catch子句判断的依据是catch后面圆括号里面的异常类型声明,它的作用是指明该catch子句能够处理的异常的类型。异常类型声明在语法的感觉上与函数形参很相似,既可以传值,也可以传址,而且各种有效的数据类型均可以使用,当然也包括类。15.2C++异常处理的实现1515.2.1异常处理的语法如果某个catch子句能够处理的异常类型与抛出的异常类型一致,那么就执行该catch子句中的处理程序段。catch子句的异常类型声明还支持一种特殊的写法——省

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

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

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