- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.1 异常处理的传统方法 8.2 C++中的异常处理 8.3 编 程 示 例 * 8.1 异常处理的传统方法 8.2 C++中的异常处理 8.3 编程示例 第 8 章 异常处理 返回主目录 8.1.1 异常的概念 在程序运行时,会出现各种各样的情况,有些是非预料的异常情况。程序员会采取各种方法来检测运行时的错误,以保证程序的健壮性。当程序运行中发生某些异常情况时,程序检测到的错误有时由用户来考虑对这些出错情况进一步作什么处理。例如,编写一个通用子程序库的程序员,当他编写的子程序在运行中检测到发生异常情况时,一般来说不会考虑对这些出错情况作进一步的处理,而是由该子程序的用户来进行处理。对于这样的情况,传统的程序设计语言通常采取设置出错代码的方式来处理。 例如通过函数的不同返回值,来表示该函数执行过程中是否发生错误以及发生哪一类错误,或者通过一个表示出错状态的全局变量来标志发生了什么样的错误。然后由调用该函数的程序对出错代码进行检查,判断发生了哪一类错误并作出相应的处理动作。这种方法虽然对异常情况做出了正确的处理,但是在判断错误类型时通常会使用大量的条件判断语句,使程序的流程变得十分复杂,而且错误处理程序代码掺杂在程序的主要功能流程中,使程序的可读性以及可理解性受到严重影响。 异常处理机制的引入使上述的情况得到了根本性的改变。当程序检测到发生某种异常情况时,抛出可由处理程序捕获的异常情况,由异常处理程序对错误作进一步的处理。 C++语言中可以使用的异常处理机制有两种,一种是基于C语言的结构化异常,另一种是C++异常。大部分C语言编译器并不支持异常处理机制,例如Borland C++ 3.1不支持异常处理机制,本章介绍的异常处理方法可以在微软的Visual C++和Borland C++4.0以上版本或C++ Builder中使用。 本节首先介绍基于C语言的结构化异常处理机制。 8.1.2 基于C的结构化异常 基于C语言的结构化异常处理语法如下: __try { 语句序列 } __except(表达式){ 异常处理程序 } 下面是一个简单的演示程序: #include stdio.h #include windows.h #include excpt.h #include winbase.h ? void excepttest( ) { RaiseException(5, 0, 0, NULL); //引起一个异常 } ? main( ) { __try{ excepttest( ); } __except(EXCEPTION_EXECUTE_HANDLER){ printf(There is a exception.); } } 这个程序运行后屏幕显示如下: There is a exception. RaiseException函数引起一个异常,该函数的说明Visual C++在winbase.h头文件中,它的原型如下: void RaiseException( DWORD dwExceptionCode, // 异常代码 DWORD dwExceptionFlags, // 异常标志 DWORD nNumberOfArguments, // 参数个数 CONST DWORD *lpArguments // 指向参数地址数组的指针 ); 参数dwExceptionCode为出错代码,可以在异常处理部分由函数GetExceptionCode获得;参数dwExceptionFlags为异常标志,通常可以取值为0;nNumberOfArguments和 lpArguments用于向异常处理程序传递信息,由异常处理程序使用函数GetException- Information获取,如果参数个数为0,则lpArguments可取为NULL。 __except(表达式)中的表达式可取下面的值: (1)? EXCEPTION_EXECUTE_HANDLER:系统将异常交由下面的异常处理程序处理。 (2) EXCEPTION_CONTINUE_SEARCH:系统继续寻找异常处理程序。例如下面的演示程序片断,函数f( )中引发的异常将由函数f2( )的异常处理程序处理。 void f( ) { RaiseException(/*参数*/); } void f1( ) { __try{ f( ); } __excep
您可能关注的文档
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第7章任务重点代码.doc
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第8章windows 相关控件.ppt
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第9章 使用ADO.net 进行数据库编程.ppt
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第9章任务重点代码.doc
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第10章 文件IO操作.ppt
- C#应用程序设计 教学课件 作者 韦鹏程 张伟 朱盈贤 第10章任务重点代码.doc
- C#应用程序设计教程 教学课件 作者 耿肇英 耿燚 第1章 C#语言基础.ppt
- C#应用程序设计教程 教学课件 作者 耿肇英 耿燚 第2章Windows编程的基础知识.ppt
- C#应用程序设计教程 教学课件 作者 耿肇英 耿燚 第3章常用控件和类的使用.ppt
- C#应用程序设计教程 教学课件 作者 耿肇英 耿燚 第4章文本编辑器的实现.ppt
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)