第五章 语句块和异常处理.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 语句块和异常处理

第五章 语句块和异常处理 一、语句块 1、C++的语句块的含义 包含在一对{}中的程序语句 例: main(){ int i,j; {//语句块开始 语句 //语句块结束} } 2、语句块的特点 语句块中声明的变量其作用域只在该块中,块外不起作用。 例:main(){ { int i,j; } i=0 //非法 } 二、C++中运行时错误处理 1、传统的运行时出错处理 利用函数的返回代码 例: int *p=new int[1000]; if(p==NULL) cout“Can not allow space”; 缺点:比较繁杂,对每个可能出现问题的语句都要处理,且有些错误无法捕获。 2、利用try…catch语句 C++提供了try…catch机制进行异常的捕获及处理机制,可以用来捕获任何在程序运行期发生的异常 格式: try{ 程序语句 } catch(异常参数){ 异常处理语句 throw(异常代码) } 3、try…catch的执行流程 3、try…catch流程 当由try关键字包含的语句块执行发生异常(如创建磁盘文件时空间已满,分配内存时没有成功,此时由程序使用throw关键字将相应的异常抛出)时, 程序自动转到第一个catch关键字处,检验其参数是否与发生的异常类型相匹配,如果类型一致,则转入此catch后的语句块开始执行。 如果某一catch后的参数为…,则代表此catch语句将匹配任何类型的异常。 如果发生的异常与所有的catch后面的参数都不匹配,则系统将调用terminate()函数,终止程序的执行。 Catch语句块中的执行流程 如果在catch语句中不含有abort()函数调用及throw语句,那么当执行完catch语句块中所有的代码后,将转至最后一个catch块后面的语句。 当含有abort()函数调用时,程序将终止执行 当遇到throw时,程序将根据throw所抛出的代码转至其他catch语句块 4、throw关键字 利用throw关键字,程序可抛出引发try…catch语句的异常类型,也可以抛出另一个异常,以便利用其他catch语句进行处理。 语法: throw [异常代码] 5、try…catch语句的嵌套 可以在try…catch块中再嵌套相应的try…catch块。 如果一个函数在try…catch语句中调用另一个函数,而该函数也含有try…catch语句,则此时也属于try…catch语句的嵌套。 当try…catch语句嵌套时,发生运行时异常时,将从内层的try..catch块检查有无catch语句与异常的类型相匹配,内层如果没有匹配,则沿嵌套的层次向上层寻找相应的catch语句 try…catch语句的嵌套 利用throw可将异常抛入上层try..catch语句块。 格式: throw 注意:只能在catch语句块中使用。 Try…catch举例 #include iostream.h #include stdlib.h main(){ try{ if(1) throw 1; } C++综合作业 1、自学课本关于链表的定义及实现,结合课堂所学的c++内容,设计一个链表类CList,利用双向链表存储学生信息。学生信息的结构体如下定义: struct student{ char name[10]; bool sex; int id; } ; CList类的设计要求 class CList{ //addNode方法向链表中增加一个节点 void addNode(student st1); //getNextNode方法,取得当前节点的下一个节点 student* getNextNode(); //getCurNode,取得当前节点 student* getCurNode(); //getPreiousNode,取得上一个节点 student* getPreiousNode(); //deleteNode,删除当前节点 bool deleteNode(); //searchNode,查找指定节点,并将找到节点指针返回 student* searchNode(sudent st); }; CList类的设计要求 用模板改写该类,使之能够存取任意数据类型。 利用学过的流的知识,在类中增加二个方法,一个

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档