- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第11章例外处理_390907271
第11章 C++工具 11.1 异常处理 11.2 命名空间 11.3 浅拷贝与深拷贝 11.1 异常处理 11.1 异常处理 11.1 异常处理 异常(例外):出现与用户期望不同情况 异常处理:在设计程序时,事先分析程序运行时可能出现的异常情况,分别制订出相应的处理方法 C++异常处理方法: 如果在执行一个函数过程中出现异常,发出一个信息给它的上一级(即调用它的函数),上级捕捉到信息后进行处理。如果上一级的函数也不能处理,就再传给其上一级。如此逐级上送,如果到最高一级还无法处理,最后调用Terminat()终止程序 异常发现与处理分离:使底层的函数专门用于解决实际任务,而不必再承担处理异常的任务,以减轻底层函数的负担,而把处理异常的任务上移到某一层去处理,可提高效率 C++处理异常的机制:检查(try)+抛出(throw)和捕捉(catch) Try:把需要检查的语句放在try块中 Throw:当出现异常时发出一个异常信息 Catch:捕捉异常信息,如捕捉到了异常信息,就处理它 给出三角形的三边a,b,c,求三角形的面积。只有a+bc,b+ca,c+ab时才能构成三角形。设置异常处理,对不符合三角形条件的输出警告信息,不予计算。先写出没有异常处理时的程序. 归纳:异常处理的一般格式 1)throw语句一般形式:throw 表达式; 2)try-catch的结构为: try {被检查的语句} catch(异常信息类型 [变量名]) {进行异常处理的语句} 基本规则: (1)try和catch作为整体出现,catch块必须紧跟在try块后。在二者之间也不能插入其他语句。但在一个try-catch结构中,可只有try块而无catch块、或多个catch块。且两者都得用花括号括起来 (2) catch括号中,一般只写异常信息的类型名, 如catch(double)。catch只检查所捕获异常信息的类型,而不检查它们的值。如没有指定类型,而用了删节号“…”,则表示可捕捉任何类型的异常信息 (3)try-catch结构可以与throw出现在同一个函数中,也可以不在同一函数中。当throw抛出异常信息后,首先在本函数中寻找与之匹配的catch,如果在本函数中无try-catch结构或找不到与之匹配的catch,就转到离出现异常最近上级try-catch结构去处理 (4)throw语句可不包括表达式,如throw; 表示“我不处理这个异常,请上级处理” (5)如果throw抛出的异常信息找不到与之匹配的catch块,那么系统就会调用一个系统函数terminate,使程序终止运行 有函数嵌套时异常处理示意图 为了阅读,C++允许在声明函数时列出可能抛出的异常类型 例:double triangle(double,double,double) throw(double); 例:double triangle(double,double,double) throw(int,double,float,char); 异常指定是函数声明的一部分,必须同时出现在函数声明和函数定义的首行中。否则,编译系统报告“类型不匹配” 如果在声明函数时未列出可能抛出的异常类型,则该函数可以抛出任何类型的异常信息 11.2 命名空间 命名作用域:C++引入了可以由用户命名的作用域,用来处理程序中常见的同名冲突 作用域:文件(编译单元) 、函数和复合语句、类作用域 不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区别它们 提问:如何扩展一个变量的作用域? 11.2 命名空间 命名空间(namespace):是由程序员命名的内存区域。程序设计者可以根据需要命名某空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来 例: namespace ns1//指定命名空间ns1 {int a; double b; } 11.2 命名空间 归纳:命名空间申明一般格式 namespace 空间名 {变量(可以带有初始化); 常量; 函数(可以是定义或声明); 结构体; 类; 模板; 命名空间(在命名空间中又定义命名空间,即嵌套的命名空间)} 例如: namespace ns1 {const int RATE=0.08;//常量 double pay; //变量 double tax( ) //函数 {return a*RATE;} namespace ns2 //嵌套的命名空间 {int age;} } 如果想输出命名空间ns1中成员的数据,使用方法: coutns1
您可能关注的文档
最近下载
- 2025和田辅警考试真题.docx VIP
- 2023年上海市大数据中心招聘考试真题.docx VIP
- 历届奥林匹克物理竞赛试题及解答.docx
- 2025上海市大数据中心招聘15人笔试模拟试题及答案解析.docx VIP
- 保险营销原理与实务(第二版)全套PPT课件.pptx
- 福建省福州延安中学2023-2024学年八年级上册月考数学试题(含解析).pdf VIP
- 外教社大学跨文化英语视听说教程 第2册.docx VIP
- 2022年上海市大数据中心招聘考试试题及答案.docx VIP
- 开学工作汇报材料PPT.pptx VIP
- (高清版)DB51∕T 2969-2022 工业园区(集中区)安全风险评估导则.pdf VIP
文档评论(0)