欢迎来到天天文库
浏览记录
ID:59448065
大小:2.27 MB
页数:30页
时间:2020-09-18
《C++第十二章教案ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二章命名空间与异常处理第十二章命名空间与异常处理命名空间概念封装使用异常处理异常处理概述try-catch结构异常捕获与处理抛出异常对象异常处理析构函数2namespaceusingnamespacestd;命名对象变量、函数、数组、结构体、类,…名字冲突开发大规模软件例如:不同厂家(团队成员)开发的类可能存在重名怎么确定用的是哪个二义性?解决方案封装:把命名对象封装定义到一个独立的内存空间命名使用:usingnamespace空间名;//指定空间名std:C++所有命名对象都封装在std空
2、间中命名空间3命名空间·封装4使用命名空间命名空间·使用这样正确吗?错,二义性一次性指定5命名空间别名namespaceTelevision//命名空间名Television{…}namespaceTV=Television;//TV别名等价命名空间嵌套定义namespacename1{intm;namespacename2{intm;}}用name1:name1::m=5;用name2:name1::name2::m=10;命名空间·别名与嵌套6命名空间·别名与嵌套7程序错误语法错误编译期间,
3、编译器发现语法错误不修正,不能生成可执行文件运行错误异常:程序运行期错误事先没想到:否则,不会发生异常如:被零除、文件不可用、非法数据等不处理异常:程序停止运行非正常异常处理SEHStructuredExceptionHandling:结构化异常处理MSWindows提供给程序员:处理异常的手段MSVC++编译程序的功能扩充有可移植性问题,非ANSI标准:对SEH进行了封装重写调用代码——简化使用异常处理·概述8异常处理方案谁发现谁处理错误检测与错误处理捆绑在可能产生异常的函数中设置它的错误处理
4、代码缺点:实现功能的同时,还得考虑错误处理一心二用逐级上报错误检测与错误处理分离底层函数发生异常:不处理,上报调用者上级函数获知后,也可不处理,继续上报...最上级还不作处理,程序最终停止运行优点底层函数专心做具体事情,不负责异常处理将异常上移到某一层函数去专门处理各司其职缺点:额外的时空耗费实时程序要考虑异常处理·概述9异常处理·用途与优势异常处理特点上述:异常的检测与处理相分离,各司其职自编函数自己用可以不用异常处理:自己知道程序是否有异常在产生异常的函数中加上错误检测与处理捆绑方式用别人
5、编的函数库作者:能够检测出异常,但不知如何处理与具体应用有关用户:不知道是否抛出、何时抛出异常异常处理作者函数检测并抛出异常,用户函数则处理异常异常处理·概述10不用异常的错误处理方式常用函数返回值判断函数操作是否成功或错误一个返回值:返回了错误代码,就不能返回其他异常处理的好处返回值可以被忽略,而异常不能忽略保证程序更健壮返回值没有语义,异常类有成员变量可包含很多信息错误检测与处理相分离异常处理机制流程监测异常try:对某段代码进行监测否则,不能捕捉抛出异常throw:程序遭遇异常后,抛出异常
6、捕捉异常catch:流程立即转向异常处理代码进行处理异常处理·概述11异常处理继续执行后面的语句try{...}catch{...}是一个整体它们之间不能插入语句预计会出现异常(被零除),需要抛出异常如果不出现异常,catch语句块不起作用catch按类型匹配异常而不是按值匹配12try-catch结构try//监控代码段{......throw表达式;//按表达式结果类型匹配......;//发生异常被跳过}catch(异常类型1变量)//按类型匹配,变量可略{......;//处理异常类型1
7、}catch(异常类型2变量){......;//处理异常类型2}......;//继续执行异常处理发生异常,立即跳转catchthrow可抛出各种数据类型包括自定义:结构体、类等catch与throw可在同一函数中也可在不同函数中,距离最近者优先匹配(本函数最近)try-catch必须都出现若无异常,catch不起作用catch(...)可捕获任何类型异常它应放在多个catch的最后捕获后不处理,可再次throw;13throw发生时不可恢复C++采用:不能再回到原抛出点继续执行异常传递立即停
8、止执行throw函数及其调用者,依次类推直到有函数捕获该异常且不再throw;如果都未捕获,程序最终停止运行立即析构有关对象与throw有关对象的成员函数throw,立即调用其析构函数异常发生时,立即析构还没来得及析构的有关对象异常处理不匹配不匹配匹配处理aamain()...catchf1()...catchf2()...catchf3()...throwa调用调用调用a不处理14栈展开过程回顾“函数调用栈过程”一节throw异常后,catch的匹配过程throw终止当前函数查找匹配的ca
此文档下载收益归作者所有