第12章+异常处理_第1页
第12章+异常处理_第2页
第12章+异常处理_第3页
第12章+异常处理_第4页
第12章+异常处理_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计(C+描述)面向对象程序设计(C+描述)本章主要内容本章主要内容l异常处理的基本思想异常处理的基本思想lC+异常处理的实现异常处理的实现抛出异常抛出异常throwthrow捕获异常捕获异常try,catchtry,catchl异常处理中的构造与析构异常处理中的构造与析构l异常规格说明异常规格说明面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)函数函数f( )f( )捕获并处理异常捕获并处理异常函数函数h( ) h( ) 引发异常引发异常函数函数g( )g( )调用者调用者异常传播方向异常传播方向调用关系调用关系面向对象程序设计(C+描述)面向

2、对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)异常处理语法(捕获异常)异常处理语法(捕获异常)面向对象程序设计(C+描述)程序运行结果如下:程序运行结果如下:5/2 = 2except of deviding zero.that is ok.面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)class og public: void* operator new( size_t sz ) out “allocating an og” endl; throw int(47); return 0; voi

3、d operator delete( void* p ) out “deleteing an og” endl; :delete p; ;面向对象程序设计(C+描述)class useResources bonk* bp; og* op;public: useResources( int count = 1 ) out “useResources( )” endl; bp = new bonkcount; op = new og; useResource( ) out “useResources( )” endl;delete bp; delete op; ;面向对象程序设计(C+描述)int

4、 main( ) try useResources ur(3); catch (int) out inside handler endl; 输出结果是: useResources ( ) bonk( ) bonk( ) bonk( ) allocating an og inside handler面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)面向对象程序设计(C+描述)本章小结本章小结面向对象程序设计(C+描述)布置作

5、业布置作业编程并上机验证:编程并上机验证: 1、编译运行以下代码,体会异常处理、编译运行以下代码,体会异常处理3个关键字个关键字try、catch和和throw的作的作用,并写出运行结果。用,并写出运行结果。 using namespace std; int main( ) cout 开始开始 endl; try cout 进入进入try块块 endl; throw 999; cout 该语句不应执行该语句不应执行; catch( int i ) cout 捕捉的异常为:捕捉的异常为:; cout i endl; cout 结束结束; 面向对象程序设计(C+描述)布置作业(续)布置作业(续)2

6、、分析以下代码,写出运行结果,并与题、分析以下代码,写出运行结果,并与题1对比分析运行结果。对比分析运行结果。 using namespace std; int main( ) cout 开始开始 endl; try cout 进入进入try块块 endl;throw 999;cout 该语句不应执行该语句不应执行; catch( double i ) cout 捕捉的异常为:捕捉的异常为:;cout i endl; cout 结束结束; 面向对象程序设计(C+描述)布置作业(续)布置作业(续)3、编译运行以下代码,分析运行结果。、编译运行以下代码,分析运行结果。using namespace

7、 std; class CB public: void print() cout Catch the class CB endl; ;class CD: public CB public: void print( ) cout Catch the class CD endl; ;int main( ) CD derived;try throw derived; catch( CB b ) cout Catch a base class: ; b.print();catch( CD d ) cout Catch a Derived class; d.print(); 面向对象程序设计(C+描述)

8、布置作业(续)布置作业(续)4、分析以下程序的执行结果,并说明原因。、分析以下程序的执行结果,并说明原因。using namespace std; void ExFun( ) try throw Welcome; catch( char * ) cout Catch inside ExFun endl; throw; int main( ) try ExFun( ); catch( char * ) cout Catch inside Main endl; 面向对象程序设计(C+描述)布置作业(续)布置作业(续)The End! Thanks!5、练习使用、练习使用try、catch语句,在程序中用语句,在程序中用new分配内分配内存时,如果操作未成功,则用存时,如果操作未成功,则用try语句触发一个语句触发一个char类类型异常,用型异常,用catch语句捕获此异常。声明语句捕获此异常。声明char *ptr10;,为该数组的每个元素分配为该数组的每个元素分配1000000000字节的内存。字节的内存。6(思考题,选做)、编写一个简单的异常处理类(思考题,选做)、编写一个简单的异常处理类CDivideByZeroException,其中提供异常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论