- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象编程技术与方法(C++)第9章 异常处理
第9章 异常处理
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.4.1 一般成员函数抛出异常
9.4.2 构造函数抛出异常
9.4.3 析构函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.1 异常处理概述
正常终止一个程序是从主函数返回。其他:从函数执行return语句返回,调用exit()和abort(),使用调试宏assert(表达式) 。
void exit(int status); //删除使用的内存空间后返回系统
void abort(void); //立即终止程序
void assert( expression ); //调试宏,false终止程序
软件应具有健壮性。软件不仅在正常情况下能够正确运行,在非正常情况下也要具有合理的表现。例如,当出现用户误操作、内存空间不足、外部设备或文件连接不正确等异常情况时,程序应能够做出适当处理,而不能出现死机、丢失数据或其他灾难性的后果。
C++处理异常情况的基本思想是将异常检测与异常处理分离。
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.2 异常处理的实现
处理异常的功能通过try、throw、catch三个部分实现。任何需要检测异常的语句都放在try模块中,出现异常时由throw语句抛出一个异常信息,由紧跟在try模块后面的catch语句捕捉并进行相应的处理。
try与catch总是结合使用的。一个try模块可与多个catch语句(称为异常处理器)联系,每个catch语句处理一种类型的异常信息。
运行结果:
after throw in Div().
5.5/1.1 = 1
double exception: 0.5
main() end.
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.3 带异常声明的函数
调用一个函数时,如果该函数可能抛出异常,我们希望通过函数接口就能够看到异常的类型,以增强可读性,并方便用户设计异常处理程序。异常声明跟随在函数参数列表之后,通过关键字throw 来指定。例如下面带异常声明的函数原型形式,其中T表示函数返回类型,list表示函数形参表,fun表示函数名。
T fun(list) throw(); //声明该函数不抛出异常
T fun(list); //声明该函数可抛出任意类型的异常
//声明下面函数可抛出T1, T2类型的异常
T fun(list) throw(T1, T2);
运行结果:
int exception: 1
main() end.
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.4 成员函数抛出异常
9.4.1 一般成员函数抛出异常
对象的成员函数抛出异常时,该对象的析构函数仍然得到执行,而且是在对象离开作用域时调用析构函数。异常处理机制不会破坏面向对象特性。
第9章 异常处理
9.4 成员函数抛出异常
9.4.2 构造函数抛出异常
当类对象的构造函数抛出异常时,已经构造完毕的子对象将会逆序地被析构,还没有开始构造的子对象将不再被构造。正在构造的对象(构造函数抛出异常的对象)将停止继续构造,并且不执行它的析构函数,也就是说构造函数中抛出异常将导致对象的析构函数不被执行。
第9章 异常处理
9.4 成员函数抛出异常
9.4.3 析构函数抛出异常
原则上析构函数中是不应该再有异常抛出的,因为析构函数的作用就是释放对象占用的资源。如果析构函数可能出现异常,要把异常处理完全封装在析构函数内部,不让异常抛出析构函数之外。
第9章 异常处理
9.1 异常处理概述
9.2 异常处理的实现
9.3 带异常声明的函数
9.4 成员函数抛出异常
9.5 标准库中的异常类型
9.6 小结
第9章 异常处理
9.5 标准库中的异常类
您可能关注的文档
- 大数据概念介绍.pptx
- 信息传递概念介绍.pptx
- 信息检索概念介绍.pptx
- 信息社会责任概念介绍.pptx
- 信息素养概念介绍.pptx
- 面向对象编程技术与方法第1章面向对象编程技术概述.pptx
- 面向对象编程技术与方法第2章C++编程基础.pptx
- 面向对象编程技术与方法第3章函数.pptx
- 面向对象编程技术与方法第4章类与对象.pptx
- 面向对象编程技术与方法第5章运算符重载.pptx
- 市科技局副局长在理论学习中心组学习2025年全国两会精神研讨发言材料.docx
- 在深入贯彻中央八项规定精神学习教育读书班开班式上的讲话1.docx
- 关于开展深入贯彻中央八项规定精神学习教育的工作方案.docx
- 市国资委党委书记学习2025年全国两会精神专题研讨发言材料.docx
- 在2025年作风建设专题“读书班”上的研讨发言材料(八项规定).docx
- 在县政府全体会议暨廉政工作会议上的讲话4.docx
- 关于我市农村电商发展情况的调研报告.docx
- 在某某区安全生产重点工作安排部署会上的讲话.docx
- 市发改局党组书记在理论学习中心组会上学习2025年全国两会精神的研讨发言材料1.docx
- 商务局委员会(商务局)基层党组织“分类指导、争先进位”工作方案.docx
文档评论(0)