例外处理和命名空间.ppt
《例外处理和命名空间.ppt》由会员分享,可在线阅读,更多相关《例外处理和命名空间.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第11章 例外处理和命名空间11.1 例外处理例外处理 大型和十分复杂的程序往往会产生一大型和十分复杂的程序往往会产生一些很难查找的甚至是无法避免的运行时些很难查找的甚至是无法避免的运行时错误。错误。当发生运行时错误时,不能简单地结当发生运行时错误时,不能简单地结束程序运行,而是退回到任务的起点,束程序运行,而是退回到任务的起点,指出错误,并由用户决定下一步工作。指出错误,并由用户决定下一步工作。面向对象的异常处理(面向对象的异常处理(exception handling)机制是)机制是C+语言用以解决这语言用以解决这个问题的有力工具。个问题的有力工具。11.1 例外处理例外处理异常的概念异常
2、的概念:这里所讲的这里所讲的异常(异常(exceptionexception)是程序可能检测到的,)是程序可能检测到的,运行时不正常的情况,运行时不正常的情况,异常异常就是程序在运行的过程中,就是程序在运行的过程中,由于使用环境的变化以及用户的不当操作而产生的错由于使用环境的变化以及用户的不当操作而产生的错误。误。例如,内存不足时,应用程序请求分配内存;例如,内存不足时,应用程序请求分配内存;请求打开硬盘上不存在的文件;程序中出现了以零为请求打开硬盘上不存在的文件;程序中出现了以零为除数的错误;打印机未打开,调制解调器掉线等,导除数的错误;打印机未打开,调制解调器掉线等,导致程序运行中挂接这些
3、设备失败等等,都会引发异常。致程序运行中挂接这些设备失败等等,都会引发异常。对这些错误,应用程序如果不能进行合适的处理,将对这些错误,应用程序如果不能进行合适的处理,将会使程序变得非常脆弱,甚至不可使用。因此,对于会使程序变得非常脆弱,甚至不可使用。因此,对于这些可以预料的错误,在程序设计时,应编制相应的这些可以预料的错误,在程序设计时,应编制相应的预防代码或处理代码,以便防止异常发生后造成严重预防代码或处理代码,以便防止异常发生后造成严重后果。后果。11.1 例外处理例外处理 一个应用程序,既要保证其正确性,还应一个应用程序,既要保证其正确性,还应有容错能力,也就是说,既要在正确的应用环有容
4、错能力,也就是说,既要在正确的应用环境中、用户操作正确时运行正常、正确,而且境中、用户操作正确时运行正常、正确,而且要在应用环境出现意外或用户操作不当时,也要在应用环境出现意外或用户操作不当时,也应有合理的反应。应有合理的反应。特别在一个大型的程序(软件)中,程序特别在一个大型的程序(软件)中,程序各部分是由不同的小组编写的,它们由公共接各部分是由不同的小组编写的,它们由公共接口连起来,错误可能就发生在相互的配合上,口连起来,错误可能就发生在相互的配合上,也可能发生在事先根本想不到的个别的条件组也可能发生在事先根本想不到的个别的条件组合上。合上。11.1 例外处理例外处理 本章介绍的技术,尽管
5、是为大型软件工程本章介绍的技术,尽管是为大型软件工程开发所发展的,但是它在标准开发所发展的,但是它在标准C+中已经成为中已经成为一个标准的技术,在任何规模的程序中都可以一个标准的技术,在任何规模的程序中都可以使用。使用。C+提供了一些内置的语言特性来提供了一些内置的语言特性来抛出抛出(throw)异常,用以通知异常,用以通知“异常已经发生异常已经发生”,然后由预先安排的程序段来,然后由预先安排的程序段来捕获(捕获(catch)异常,并对它进行处理。这种机制可以在异常,并对它进行处理。这种机制可以在C+程序的两个无关(往往是独立开发)的部分进程序的两个无关(往往是独立开发)的部分进行行“异常异常
6、”通信。由程序某一部分引发了另一通信。由程序某一部分引发了另一部分的异常,这一异常可回到引起异常的部分部分的异常,这一异常可回到引起异常的部分去处理(沿着程序函数的调用链)。这也是分去处理(沿着程序函数的调用链)。这也是分清处理责任的好办法。清处理责任的好办法。异常处理机制异常处理机制异常处理的基本思想异常处理的基本思想1.1.小型程序在出现异常时,一般是将程序立即小型程序在出现异常时,一般是将程序立即中断运行,无条件释放所有资源。中断运行,无条件释放所有资源。如:如:11.1 例外处理例外处理例14.1 以下程序当除数为零时,停止运行并给出提示信息#include#includedouble
7、 fuc(double x,double y)if(y=0)cerrerror of dividing zero.n;exit(1);return x/y;void main()fuc(2,3);fuc(4,0);11.1 例外处理例外处理2.2.大中型程序中,上述处理方法就过于简大中型程序中,上述处理方法就过于简单粗糙。这是因为在大中型程序中,函数之间单粗糙。这是因为在大中型程序中,函数之间有着明确的分工和复杂的调用关系。发现错误有着明确的分工和复杂的调用关系。发现错误的程序往往在函数调用链的低层,这样,简单的程序往往在函数调用链的低层,这样,简单地在发现错误的函数中处理异常,就没有机会地在
8、发现错误的函数中处理异常,就没有机会把调用链中的上层函数已经完成的一些工作做把调用链中的上层函数已经完成的一些工作做妥善的善后处理。例如,上层函数已经申请了妥善的善后处理。例如,上层函数已经申请了堆对象,那么释放堆对象的工作显然不能在底堆对象,那么释放堆对象的工作显然不能在底层函数中处理,从而使程序不能正常运行。因层函数中处理,从而使程序不能正常运行。因此,对于大中型程序来说,在程序运行中一旦此,对于大中型程序来说,在程序运行中一旦发生异常,应该允许恢复和继续运行。发生异常,应该允许恢复和继续运行。11.1 例外处理例外处理恢复恢复是指把产生异常的错误处理掉,中是指把产生异常的错误处理掉,中间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 例外 处理 命名 空间
限制150内