- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络游戏开发语言基础-C++程序设计 专业教程 理论讲解部分 Ver3.1 第058课 异常处理 概述: 程序中引入异常处理机制的原因 异常处理在C++中的实现 多级多层捕获与处理 异常处理的堆栈展开 重点: 难点: 异常处理的堆栈展开 异常处理在C++中的实现 15 异常处理 第058课 异常处理 传统C的错误处理方法并不适合C++,C++的一个设计目标就是让用C++进行大规模软件开发比C更好更安全。C++的设计者们已经意识到缺乏合适的错误处理机制使得实现这一目标相当的困难。他们试图寻找一种完全摆脱C的错误处理缺陷的解决方案。其中的一种想法就是建立在当异常被触发的时候程序自动把控制权传递给系统。机制必须简单,并且它能够使程序员从不断的检查一个全局标记或者返回值的苦差事中解脱出来。另外,它还必须保证异常处理程序能够自动获得异常信息。最终它还要确保当一个异常没有在本地处理的时候,本地对象能够被适当的销毁,并且把它所持有的资源释放。 15 异常处理 第058课 异常处理 异常处理是一种灵活并且精巧的工具。它克服了C的传统错误处理方法的缺点并且能够被用来解决一系列运行期错误。但是,异常处理也像其他语言特性一样,很容易被误用。为了能够有效的使用这一特性,理解运行期机制是如何工作的以及相关的性能花费是非常重要的。 15 异常处理 15.1 异常处理在C++中的实现 第058课 异常处理 程序运行中的某些错误(或意外情况)不可避免但可以预料。如,做除法或模运算时使用的分母y 为0,程序中可通过添加如下形式的测试语句来判断是否出现了这种意外情况(即异常),“if(y==0){ coutError occuring -- Divided by 0!;exit(1);}”,若出现的话,则用户程序将进行干预,比如先在屏幕上给出适当的错误提示信息,而后退出程序停止运行等。这实际上已经是在做异常处理的工作了,读者从前面章节的某些例题中可能早就注意到了这种对异常(或错误)的程序处理方式。实际上,C++还提供更方便的对异常进行处理的机制,那就是在程序中使用try、catch 和throw。 15 异常处理 第058课 异常处理 请看如下程序,其中使用了try、catch 和throw 来对除以0 或模0 所产生的异常进行处理。程序要求输入两个整数i1、i2 以及一个运算符op(“/”或者“%”),而后进行相应运算并对所出现的异常进行处理。 #include iostream using namespace std; void main() { try { //try 程序块为“受监控”的块,块中所抛掷的异常 //将被本try 块后的某一个catch 块所捕获并处理 int i1, i2; char op; coutInput I1 I2 OP:; 15 异常处理 第058课 异常处理 //输入两个整数i1、i2 以及一个运算符op cini1i2op; if (op==/) { //分母为0 时,抛掷一个字符串 — char*类型的异常 if (i2==0) //所抛掷的异常将被随后的catch 块捕获并处理 throw “Divided by 0!”; //正常情况(分母非0)的处理 couti1 / i2=i1/i2endl; } else 15 异常处理 第058课 异常处理 if (op==%) { //分母为0 时,抛掷整数i1 — int 型异常 if (i2==0) //所抛掷的异常将被随后的catch 块捕获并处理 throw i1; //正常情况处理 couti1 % i2=i1%i2endl; } else //限制op 只能为“/”或者“%” coutOP error -- must be / or %!endl; //再进行一些其他的处理 cout22 / 5=22/5endl; } 15 异常处理 第058课 异常处理 catch (int i) { //捕获“int”类型的异常并进行处理 //输出相关的异常信息后结束本catch块 coutError occuring -- i % 0 endl; } catch (char * str) { //捕获“char *”类型的异常并进行处理 //输出相关的异常信息后结束本catch 块 cout“Error occuring -- ”strendl; } //异常处理结束后,均转到此处执行该语句 cout“End main function!”endl; } 15 异常处理 第058课 异常处理 显示结果为: Inpu
您可能关注的文档
- 2015年中国肉和家禽行业数据监测深度调研分析报告.doc
- 2015年中国蒙台梭利幼儿教育国际研讨会.doc
- 2015年中国家纺行业市场营销研究综述.doc
- 2015年中国动漫产业年度报告.doc
- 2015年中国创业投资年度报告书.docx
- 2015年中国3D消费者认知调查报告.docx
- 2015年真题.doc
- 2015年造纸行业分析报告.pdf.pdf
- 2015年在职研究生考试法律硕士专业综合真题及答案解析.pdf
- 2015年一级建造师《市政公用工程管理与实务》临考突破一.doc
- 147-泉州市鞋服行业竞争力研究.doc
- 187-毕博清华紫光绩效考核体系培训.pdf
- 500强连锁超市陈列手册.ppt
- 2015-2015年客车市场调研及发展趋势预测报告.pdf
- 2015-2015年乳制品市场发展研究报告.pdf
- 2015-2016年教育编辑软件行业市场发展趋势及深度分析报告.pdf
- 2015-2016年锂离子电池行业市场深度调研咨询报告.pdf
- 2015-2016年中国采油设备上下游产业链及市场调查研究报告 target=_blank.doc
- 2015-2016年中國電子支付行業發展分析及投資研究報告.pdf
- 2015-2017年中国CIGS薄膜太阳能电池市场调查及投资分析报告.doc
文档评论(0)