- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
class?myexception:public?exception{ ? public: ? virtual?const?char?*?what()?const; ? }; ? const?char*?myexception::what()?const { ? return?myException; ? } ? class?A{ ? public: ? A( ){ } ? void?f( )?throw( ){ ? throw?new?myexception(); ? } ?}; ? 值传递示例 int?main(){ ? A?a; ? try { ? a.f(); ? } catch(exception*?pexc){ ? coutpexc-what(); ? delete?pexc; ? } ? } 运行结果:myException class?myexception:public?exception{ ? public: ? virtual?const?char?*?what()?const; ? }; ? const?char*?myexception::what()?const { ? return?myException; ? } ? class?A{ ? public: ? A( ){ } ? void?f( )?throw( ){ ? throw?new?myexception(); ? } ?}; ? 引用传递示例 int?main(){ ? A?a; ? try { ? a.f(); ? } catch(exceptionexc){ ? coutexc.what(); ? delete?exc; ? } ? } 运行结果:myException 单击此处编辑母版标题样式 单击此处编辑母版副标题样式 上海财经大学 信息管理与工程学院 2014年10月 计 算 机 编 程 第18章 C++异常处理 18.1 概述 18.2 异常处理方法 18.3 异常处理接口声明 18.4 异常处理注意事项 18.5 异常传递的方法 18.1 概述 由语法错误,即程序中因书写出现了错误的语句、函数、结构和类等,致使编译器无法顺利处理生成可执行程序。 程序运行过程时发生的错误,这种情况往往由算法和程序设计细节引起的。 C++的异常有两种情况: 关注运行期间发生的异常。 异常处理一般方法 在逻辑上保证程序的健壮性。例如,针对文件 打开失败的情况,最简单的保护的方法就是使用“return”命令,告诉上层调用者函数执行失败; 利用C++的异常机制,抛出异常,做相应处理。 18.2 异常处理方法 在程序执行过程中发生异常,可以不在本函数中处理,而是抛出一个错误信息,把它传递给上一级的函数来解决; 如果上一级解决不了,再传给其上一级,由其上一级处理; 如此逐级上传,直到最高一级还无法处理的话,运行系统会自动调用系统函数terminate,由它调用 abort函数终止程序。 异常处理机制优点在于把异常触发和处理机制分离,使得它们不在同一个函数中处理。底层函数只需要解决实际的任务,而不必过多考虑对异常的处理,而把异常处理的任务交给上一层函数去处理。 异常处理机制组成 C++的异常处理机制有3部分组成:try(检查),throw(抛出),catch(捕获)。 把需要检查的语句放在try模块中,首先通过检查语句来检查发生的错误,然后由throw抛出异常,发出错误信息,最后由catch来捕获异常信息,并进行处理。 一般throw抛出的异常要和catch所捕获的异常类型所匹配。 异常处理的一般格式 try { 被检查语句 throw 异常 } catch(异常类型1) { 进行异常处理的语句1 } catch(异常类型2) { 进行异常处理的语句2 } 异常处理的执行过程 控制通过正常顺序执行到达try 语句,然后执行try 块内的保护段 如果在保护段执行期间没有引起异常,那么跟在try 块后的catch 子句就
文档评论(0)