中国高校课件下载中心 》 教学资源 》 大学文库

南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 6-异常处理

文档信息
资源类别:文库
文档格式:PPT
文档页数:14
文件大小:166KB
团购合买:点击进入团购
内容简介
南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 6-异常处理
刷新页面文档预览

第6章异常处理陈哲教授南京航空航天大学计算机科学与技术学院

1 第6章 异常处理 陈哲 教授 南京航空航天大学 计算机科学与技术学院

异常6.1异常是在程序执行期间的突发性事件。异常与错误不同,错误可通过编译系统处理1.抛出异常.Example:floatnumer, int div)divide(intif (div == 0)throw"ERROR:dividebyzero.Inelsefloat (numer) / div;return

2 6.1 异常 • 异常是在程序执行期间的突发性事件。 • 异常与错误不同,错误可通过编译系统处理。 • 1. 抛出异常 . Example: float divide(int numer, int div ) { if ( div == 0 ) throw "ERROR: divide by zero. \n"; else return float (numer) / div; }

异常(continued)6.12.处理异常。try!Ⅱ可能出现异常的程序代码catch(exception paramlⅡ处理异常类型1的代码catch(exception param2)/处理异常类型2的代码Ⅱ异常处理结束后,继续执行的代码

3 6.1 异常 (continued) 2. 处理异常。 try { // 可能出现异常的程序代码 } catch( exception param1 ) { // 处理异常类型1的代码 } catch( exception param2 ) { // 处理异常类型2的代码 } // 异常处理结束后,继续执行的代码

// 例6-1#includeusingnamespace std;floatdivide(int number, int div)if (div==throw"ERROR:divide by zero.In'elsefloat(number) / div;return

// 例6-1 #include using namespace std; float divide(int number, int div) { if (div == 0) throw "ERROR: divide by zero.\n"; else return float(number) / div; }

void main()intnuml, num2;思考:如果不处float quotient;理又怎么样?cout>numl >>num2;try(quotient = divide(numl, num2);cout<<"The quotient is "<< quotient;fcatch(char*exceptionString)cout<< exceptionString;6-1.cppcout<<"InEndoftheprogram.In

void main( ) { int num1, num2; float quotient; cout > num1 >> num2; try { quotient = divide(num1, num2); cout << "The quotient is " << quotient; }catch (char *exceptionString) { cout << exceptionString; } cout << "\nEnd of the program.\n"; } 思考:如果不处 理又怎么样? 6-1.cpp

异常(continued)6.1异常处理失败的原因:(1)try语句块中实际产生的异常,与catch语句圆括号指定要捕捉的异常类型不匹配:(2)try语句块的范围太小,在try语句之前就已经产生了异常,那么后面的try语句块将不再执行

6 6.1 异常 (continued) • 异常处理失败的原因: (1) try语句块中实际产生的异常,与catch语句圆括 号指定要捕捉的异常类型不匹配; (2) try语句块的范围太小,在try语句之前就已经产 生了异常,那么后面的try语句块将不再执行

6.2基于对象的异常处理·C++除了支持基本类型的异常处理外,还支持面向对象的异常处理。,C++在处理多种类型的异常时,要求这些异常对象必须属于不同类型,并且对每种类型的异常都要编写一段对应的catch代码·例如:6-3

7 6.2 基于对象的异常处理 • C++除了支持基本类型的异常处理外,还支持面 向对象的异常处理。 • C++在处理多种类型的异常时,要求这些异常对 象必须属于不同类型,并且对每种类型的异常都 要编写一段对应的catch代码。 • 例如:6-3

class IntRangeint input, lower,upper;public:新思想:基于对class TooLowl1象的异常处理class TooHigh1;.00IntRange(int low, int high) lower =low;upper =high;int getInput()cin >> input;if (input upper) throw TooHigh();return input;

class IntRange { int input, lower , upper; public: class TooLow{ }; class TooHigh{ } ; IntRange( int low, int high ) { lower = low; upper = high; } int getInput( ) { cin >> input; if (input upper) throw TooHigh( ); return input; } }; 新思想:基于对 象的异常处理

void main()IntRange range(5,10);int userValue;cout<<"输入一个5-10之间的值:tryuserValue=range.getlnputOcout<<"你输入的是"<<userValue<<endl;fcatch(IntRange :: TooLow) cout<<"输入值小于下限ln";fcatch(IntRange::TooHigh)cout<<"输入值大于上限\n";cout<<"程序结束In";6-3.cpp

void main( ) { IntRange range( 5 , 10 ) ; int userValue ; cout << "输入一个5-10之间的值:" ; try { userValue = range.getInput( ) ; cout << "你输入的是" << userValue << endl ; }catch( IntRange :: TooLow ) { cout << "输入值小于下限\n" ; }catch( IntRange :: TooHigh ) { cout << "输入值大于上限\n" ; } cout << "程序结束\n" ; } 6-3.cpp

6.4通过异常对象获取异常信息可以通过异常对象将异常信息传递给异常处理者·例如:1例6-410

10 6.4 通过异常对象获取异常信息 • 可以通过异常对象将异常信息传递给异常处理者。 • 例如:例6-4

共14页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档