C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt

C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt

ID:50318868

大小:115.00 KB

页数:21页

时间:2020-03-08

C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt_第1页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt_第2页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt_第3页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt_第4页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt_第5页
资源描述:

《C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++8.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章异常处理异常类抛出异常throw捕捉异常try异常定义程序在执行过程中出现的意外情况。分类用户输入错误设备故障物理限制代码错误传统异常处理方法方法条件判断、分支处理问题程序错误影响整个系统的运行。最好是停止发生错误的局部操作,进行必要处理。其他部分仍然继续运行。ComplexComplex:::Divide(constComplexx)const{ComplexZ;floatc=x.real*x.real+x.imag*x.imag;if(C==0){cout<<“分母为0错!”;exit(0);}else{z.real=(real*

2、x.real+imag*x.imag)/c;z.imag=(x.real*imag–real*x.imag)/c;returnz;}}C++异常处理方法基本思想分离异常的抛出和异常的处理。基本方法当程序中出现异常时抛出异常,通知系统发生了异常,然后由系统捕捉异常,并交给预先安排的异常处理程序段来处理异常。优点方便通用软件模块的设计。基本的异常处理方法//complex.h#includeclassDivideZero{};classComplex{……ComplexDivide(constComplexx)const

3、;};ComplexComplex::Divide(constComplexx)const{floatc=x.real*x.real+x.imag*x.imag;if(C==0)throwDivideZero();returnCompelx(real*x.real+imag*x.imag)/c,x.real*imag–real*x.imag)/c);}程序中所有可能异常,义相应的异常类,常为空。throw<异常类对象〉调用类的构造函数创建异常类对象,系统自动创建一个DivdeZero类的无名对象//Exam8-1.cpp#include”C

4、omplex.h”voidmain(void){Complexx(1,1),y(0,0),z;try{z=x.Divide(y);cout<<“zis:”;z.show();}catch(DivideZero){cout<<“除数为0错!”<){//异常处理语句}含返回语句,则整个程序结束;否则,顺序执行catch语句后的语句。多个异常的处理方法try{//可能抛出异常的语句段;}catch(<异常类1>){

5、//异常类1处理语句}……catch(<异常类n>){//异常类n处理语句}例8.2顺序堆栈类异常处理异常类的定义和异常抛出入栈满异常类出栈空异常类测试程序捕捉异常异常类的设计classPushOnFull//入栈满异常类{private:intvalue;//成员变量public:PushOnFull(intx):value(x)//构造函数{}intValue(void)//取value值成员函数{returnvalue;}};classPopOnEmpty//出栈空异常类{};异常类的设计classSeqStack//顺序堆栈类{pr

6、ivate:int*data;//数组intMaxStackSize;//数组个数inttop;//当前栈顶下标public:SeqStack(intn);//构造函数~SeqStack(void);//析构函数voidPush(constintitem);//入栈intPop(void);//出栈};异常类的设计SeqStack::SeqStack(intn)//构造函数{top=0;MaxStackSize=n;data=newint[n];}SeqStack::~SeqStack(void)//析构函数{deletedata;}异常类

7、的设计voidSeqStack::Push(constintitem)//入栈{if(top==MaxStackSize)throwPushOnFull(item);data[top]=item;top++;}intSeqStack::Pop()//出栈{if(top==0)throwPopOnEmpty();//抛出异常top--;returndata[top];}异常类的设计#include#include"SeqStack2.h"voidmain(void){inti;SeqStackmyStack(10);t

8、ry//捕捉异常1{for(i=0;i<11;i++)myStack.Push(i+1);}catch(PushOnFullobj)//处理异常1{cout<<"堆栈已满"<

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

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

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