- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言大学教程--C++语言第24章.ppt
异常的重新抛出 C++异常处理的嵌套结构中,其规则是外 层的throw语句投出的异常流入外层的catch捕 获器,而内部catch块接受的是同级try块 throw语句抛来的信息。 如果程序员期望内层触发的错误源输送到 高层专门的程序段予以处理,而不是当前层的 catch块中解决,需要使用异常的层层转递手 段,这就是throw语句不带表达式的默认形式。 异常的重新抛出 不带表达式的throw语句内嵌在catch内,意味着当前catch块在入口中捕获的类型信息,throw接力地将此类型信息抛出到上层的相应类型入口的catch处理器。特定异常流就从内层中向外传到需要的地方。 #include iostream #include exception using namespace std; void throwException() { try { cout throws an exception\n; throw exception(); } catch ( exception ) { cout Exception handled ; throw; } cout print?\n; } int main() { try { throwException(); cout error; } catch ( exception ) { cout \n\nException handled in main\n; } cout in main\n; return 0; } 异常指定 指定由函数抛出的异常 例如: 函数原型为:int f( int ) throw (int,float); 函数定义为:int f(int i) throw (int , float ) { if (i 0) throw i ; if ( i 0) throw 0.0; } 函数原型中的异常说明要与其实现中的异常一致。 使用函数异常说明的基本原因: 清楚地告诉函数的调用者,该函数可能会抛出哪些类型的异常,以便用户能够编写合适的异常处理器。 用户一般无法看到函数的实现(例如库函数),因此用户只能浏览函数原型才知道一个函数可能会抛出哪些类型的异常。 异常指定的好处 约束函数实现者,防止抛出异常说明列表中没有说明的异常. 指导函数的调用者编写正确的异常处理程序。 异常指定 函数异常说明的几种情况 只能抛出一种异常 double Devide(double x, double y) throw (DevidedByZero); 可能抛出多种异常 bool func(const char *) throw (T1, T2, T3); 不抛出任何异常 void g() throw () 可能抛出任何异常,也可能不抛出任何异常 void k(); 异常指定 #include iostream using namespace std; int main( ) {void f1( ); try {f1( );}//调用f1( ) catch(double) {cout″OK0!″endl;} cout″end0″endl; return 0; } void f1( ) {void f2( ); try {f2( );} //调用f2( ) catch(char) {cout″OK1!″;} cout″end1″endl;} void f2( ) {void f3( ); try {f3( );} //调用f3( ) catch(int) {cout″Ok2!″endl;} cout″end2″endl; } void f3( ) {double a=0; try {throw a;} //抛出double类型异常信息 catch(float) {cout″OK3!″endl;} cout″end3″endl; } 执行上面的程序。图14.1为有函数嵌套时异常处理示意图。 图14.1 异常与继承 基类的异常处理器可以捕获子类的异常。反过来不行。 #in
您可能关注的文档
- (2014年10月学院讲座)在理想和现实之间求实效.ppt
- (2015版)第四章第一节.ppt
- (必威体育精装版版)我国高等学校介绍.pptx
- 001摄影基础教学.ppt
- 002摄影作品分析.pptx
- 02消费者选择.ppt
- 03.III期辅助治疗-0626.pptx
- 03设计史-装饰艺术运动.ppt
- 04.IV期潜在可切除成功转化-0626.pptx
- 0407教师说课学校教育学校汇报工作通用.pptx
- 二零二四年度弱电智能化安防监控系统施工协议3篇.docx
- 二零二四年度弃土场施工项目施工期突发事件应急处理合同范本3篇.docx
- 二零二四年度弱电智能化办公楼弱电系统施工合同3篇.docx
- 二零二四年度弱电线路改造及升级工程承包合同3篇.docx
- 二零二四年度弱电施工合同,涵盖智慧停车场管理系统2篇.docx
- 二零二四年度弱电智能化数据中心建设施工合同3篇.docx
- 二零二四年度强夯工程地基处理与地质勘探合同3篇.docx
- 二零二四年度弱电施工合同,针对智慧交通设施升级3篇.docx
- ODM蓝牙耳机合同范本.docx
- 第十六章 电磁转换 单元测试(含答案)-2024-2025学年物理苏科版九年级下册.pdf
文档评论(0)