第五章 语句块和异常处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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