- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计异常处理
C++程序设计 异常处理 第10章 异常处理 第10章 异常处理 10.1 异常处理的概念及C++异常处理的基本思想 10.2 异常处理的实现 10.3 学生信息管理系统中的异常处理 10.1 异常处理的概念及C++异常处理的基本思想 程序中常见的错误有两大类:语法错误和运行错误。在编译时,编译系统能发现程序中的语法错误(如关键字拼写错误,变量名未定义,语句末尾缺分号,括号不配对等),程序员通过错误提示可以进行修改。 有的程序虽然能通过编译,也能投入运行,但是在运行过程中会出现异常,得不到正确的运行结果,甚至导致程序不正常终止或出现死机现象,这些都说明程序中存在运行错误。运行错误相对来说比较隐蔽,是程序调试中的一个难点,该错误又可分为逻辑错误和运行异常两类。逻辑错误是由设计不当造成的,如对算法理解有误、在一系列计算过程中出现除数为0、数组的下标溢出等。这些错误只要我们在编程时多加留意是可以避免的。但是,运行异常是由系统运行环境造成的,导致程序中内存分配、文件操作及设备访问等操作的失败,可能会造成系统运行失常并瘫痪。 在运行没有异常处理的程序时,如果运行情况出现异常,由于程序本身不能处理,程序只能终止运行。如果在程序中设置了异常处理,则在运行情况出现异常时,由于程序本身已设定了处理的方法,于是程序的流程就转到异常处理代码段处理。 需要说明的是:只要程序运行时出现与人们期望的情况不同,都可以认为是异常,并对它进行异常处理。因此,所谓异常处理是指对程序运行时出现的差错以及其他例外情况的处理。 10.2 异常处理的实现 10.2.1 异常处理语句 C++处理异常的机制由3个部分组成:检查(try)、抛出(throw)和捕捉(catch)。把需要检查的语句放在try块中,throw用来当出现异常时抛出一个异常信息,而catch则用来捕捉异常信息,如果捕捉到了异常信息,就处理它。try-throw-catch构成了C++异常处理的基本结构,形式如下: try{ … if(表达式1) throw x1 … if(表达式2) throw x2 … if(表达式n) throw xn … } catch(异常类型声明1) { 异常处理语句序列 } catch(异常类型声明2) { 异常处理语句序列 } … catch(异常类型声明n) { 异常处理语句序列 } 这里,try语句块内为需要受保护的待检测异常的语句序列,如果怀疑某段程序代码在执行时有可能发生异常,就将它放入try语句块中。当这段代码的执行出现异常时,即某个if语句中的表达式的值为真时,会用其中的throw语句来抛掷这个异常。 throw语句语法: throw 表达式; throw语句是在程序执行发生了异常时用来抛掷这个异常的,其中表达式的值可以是int、float、字符串、类类型等,把异常抛掷给相应的处理者,即类型匹配的catch语句块。如果程序中有多处需要抛掷异常,应该用不同类型的操作数来互相区别。throw抛出的异常,通常是被catch语句捕获。 catch语句块是紧跟在try语句块后面的,即try块和catch块作为一个整体出现,catch块是try-catch结构中的一部分,必须紧跟在try块之后,不能单独使用,在二者之间也不能插入其他语句。但是在一个try-catch结构中,可以只有try块而无catch块。即在本函数中只检查而不处理,把catch块放在其他函数中。一个try-catch结构中只能有一个try块,但却可以有多个catch块,以便与不同类型的异常信息匹配。在执行try块中的语句时如果出现异常执行了throw语句,系统会根据throw抛出的异常信息类型按catch块出现的次序,依次检查每个catch参数表中的异常声明类型与抛掷的异常信息类型是否匹配,当匹配时,该catch块就捕获这个异常,执行catch块中的异常处理语句来处理该异常。 在catch参数表中,一般只写异常信息的类型名, 如:catch(double)。 系统只检查所抛掷的异常信息类型是否与catch参数表中的异常声明类型相匹配,而不检查它们的值。假如变量a,b,c都是int型,即使它们的值不同,在throw语句中写throw a、throw b或throw c的作用也均是相同的。因此,如果需要检测多个不同的异常信息,应当由throw抛出不同类型的异常信息。 异常信息类型可以是C++系统预定义的标准类型,也可以是用户自定义的类型(如结构体或类)。如果由throw抛出的异常信息属于该类型或其子类型,则catch与throw二者匹配,catch捕获该异常信息。注意:系统在检查异常信息数据类型的匹配时,不会进行数据类型的默认转换,只有与所抛掷的
您可能关注的文档
- 4课明清之际活跃儒家思想上课课件.ppt
- 财务管理期中试题〔单号〕.doc
- 4走进意象艺术_温故知新导入.ppt
- 财务管理期末试卷和答案一.doc
- 财务管理第十一章课后习题1.doc
- 财经法规与会计职业道德考试全解析第三讲.doc
- 5.学术资源的利用_041.3.ppt
- 财经法规与职业道德第1章习题.doc
- 5.7同步测试卷5.ppt
- 财经法规第一章第二节–第三节练习题.doc
- 2025届高考政治冲刺复习我国的基本政治制度.pptx
- 2025届新高考历史冲刺精准复习世界殖民体系的瓦解与新兴国家的兴起.pptx
- 2025届高考政治冲刺精准复习我国的个人收入分配与社会保障.pptx
- 第5课+工业革命与工厂制度+高二历史统编版(2019)+选择性必修2.pptx
- 2025届高考政治冲刺精准复习法治政府.pptx
- 第16课+国家出路的探索与列强侵略的加剧高一上学期统编版(2019)必修中外历史纲要上.pptx
- 2025届高考政治冲刺精准复习 我国的根本政治制度.pptx
- 2025届新高考历史冲刺精准复习中国近代资产阶级救亡图存运动.pptx
- 2025届高考政治冲刺精准复习全面依法治国.pptx
- 2025届高考政治冲刺精准复习我国的基本政治制度.pptx
文档评论(0)