版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象编程技术与方法(C++)
第9章异常处理第9章异常处理第9章
异常处理
9.1异常处理概述
9.2异常处理的实现
9.3带异常声明的函数
9.4成员函数抛出异常
9.4.1一般成员函数抛出异常
9.4.2构造函数抛出异常
9.4.3析构函数抛出异常
9.5标准库中的异常类型
9.6小结
第9章异常处理9.1异常处理概述9.2异常处理的实现 9.3带异常声明的函数 9.4成员函数抛出异常 9.5标准库中的异常类型 9.6小结
第9章异常处理9.1异常处理概述正常终止一个程序是从主函数返回。其他:从函数执行return语句返回,调用exit()和abort(),使用调试宏assert(表达式)。voidexit(intstatus);//删除使用的内存空间后返回系统voidabort(void);//立即终止程序voidassert(expression);//调试宏,false终止程序软件应具有健壮性。软件不仅在正常情况下能够正确运行,在非正常情况下也要具有合理的表现。例如,当出现用户误操作、内存空间不足、外部设备或文件连接不正确等异常情况时,程序应能够做出适当处理,而不能出现死机、丢失数据或其他灾难性的后果。C++处理异常情况的基本思想是将异常检测与异常处理分离。第9章异常处理9.1异常处理概述9.2异常处理的实现
9.3带异常声明的函数 9.4成员函数抛出异常 9.5标准库中的异常类型 9.6小结
第9章异常处理9.2异常处理的实现处理异常的功能通过try、throw、catch三个部分实现。任何需要检测异常的语句都放在try模块中,出现异常时由throw语句抛出一个异常信息,由紧跟在try模块后面的catch语句捕捉并进行相应的处理。try与catch总是结合使用的。一个try模块可与多个catch语句(称为异常处理器)联系,每个catch语句处理一种类型的异常信息。运行结果:afterthrowinDiv().5.5/1.1=1doubleexception:0.5main()end.第9章异常处理9.1异常处理概述9.2异常处理的实现 9.3带异常声明的函数
9.4成员函数抛出异常 9.5标准库中的异常类型 9.6小结
第9章异常处理9.3带异常声明的函数调用一个函数时,如果该函数可能抛出异常,我们希望通过函数接口就能够看到异常的类型,以增强可读性,并方便用户设计异常处理程序。异常声明跟随在函数参数列表之后,通过关键字throw来指定。例如下面带异常声明的函数原型形式,其中T表示函数返回类型,list表示函数形参表,fun表示函数名。
Tfun(list)throw(); //声明该函数不抛出异常
Tfun(list);//声明该函数可抛出任意类型的异常
//声明下面函数可抛出T1,T2类型的异常
Tfun(list)throw(T1,T2);运行结果:intexception:1main()end.第9章异常处理9.1异常处理概述9.2异常处理的实现 9.3带异常声明的函数 9.4成员函数抛出异常
9.5标准库中的异常类型 9.6小结
第9章异常处理9.4成员函数抛出异常9.4.1一般成员函数抛出异常对象的成员函数抛出异常时,该对象的析构函数仍然得到执行,而且是在对象离开作用域时调用析构函数。异常处理机制不会破坏面向对象特性。
第9章异常处理9.4成员函数抛出异常9.4.2构造函数抛出异常当类对象的构造函数抛出异常时,已经构造完毕的子对象将会逆序地被析构,还没有开始构造的子对象将不再被构造。正在构造的对象(构造函数抛出异常的对象)将停止继续构造,并且不执行它的析构函数,也就是说构造函数中抛出异常将导致对象的析构函数不被执行。第9章异常处理9.4成员函数抛出异常9.4.3析构函数抛出异常原则上析构函数中是不应该再有异常抛出的,因为析构函数的作用就是释放对象占用的资源。如果析构函数可能出现异常,要把异常处理完全封装在析构函数内部,不让异常抛出析构函数之外。第9章异常处理9.1异常处理概述9.2异常处理的实现 9.3带异常声明的函数 9.4成员函数抛出异常 9.5标准库中的异常类型
9.6小结
第9章异常处理9.5标准库中的异常类型运行结果:012345Out_of_rangeerrorinArray.第9章异常处理9.1异常处理概述9.2异常处理的实现 9.3带异常声明的函数 9.4成员函数抛出异常 9.5标准库中的异常类型 9.6小结
第8章异常处理8.1异常处理概述8.2异常处理的实现8.3带异常声明的函数8.4成员函数抛出异常8.5标准库中的异常类型8.6小结第9章异常处理9.6小结异常处理机制是由语言提供的运行时处理错误的一种方式,它提供一种退出程序的安全通道。C++语言通过try、throw、catch语句实现异常处理。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论