C++程序设计第14章 异常教学课件.ppt
《C++程序设计第14章 异常教学课件.ppt》由会员分享,可在线阅读,更多相关《C++程序设计第14章 异常教学课件.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计第14章 异常教学课件C+程序设计标准课件第十四章 异常http:/ 本章内容提要 一、错误处理的复杂性 二、使用异常 三、捕获异常 四、异常的申述3http:/ 14.1 错误处理的方法 三、捕获异常 二、使用异常一、错误处理的复杂性 四、异常的申述4http:/ 14.1.1 错误的种类编译错误。指在程序编译过程中发生的错误,这类错误一般是由语法问题引起的,如括号不匹配、分号缺失、变量名拼写出错等。运行错误。指程序可以通过编译,但总达不到预期效果,甚至导致程序崩溃。而且不容易找到错误所在的位置,只能根据经验猜测,然后一步步调试。这类错误包括内存泄露、存储数据混淆、无效的输出等。
2、传统的错误处理方式。设置全局错误状态,在函数中返回错误信息。利用标准C库中的信号函数signal()和raise()。利用标准C库中的非局部跳转函数setjmp()和longjmp()。5http:/ 14.1.2 模块的隔绝性C+语言的一个最大优点就是模块的内聚性,即一个模块只做一件事,所以在大型程序中,一个动作模块可能要调用许多个子动作模块,甚至有些子模块是完全独立封装的,那么如果在这样的模块中出现了问题如何解决呢?例如,在一个学生信息管理系统中,前台程序希望增加一条学生的记录,于是系统便去访问内存管理模块,如果内存不够,那么前台程序希望得到一个内存不够的信息,如图14-4所示。这时如何实
3、现模块间的异常信息通信便成了亟待解决的问题。图14-4模块间错误信息传递6http:/ 14.1.3 调用链的牵制C+的函数存放在栈区,采用栈式管理,所以函数间传递信息需要逐层退栈,并在每层记录信息,以便本层函数退栈时能及时将错误传递出去。例如,图14-5显示了一条汽车生产线程序示意图。请参见书中程序。图14-5汽车生产线示意图7http:/ 14.2 使用异常 三、捕获异常 一、错误处理的复杂性 二、使用异常 四、异常的申述8http:/ 14.2.1 异常的使用步骤通常异常处理机制的使用都分为下面3个步骤。框定测试语句段(try语句)定义异常处理语句(catch语句)抛掷异常(throw语
4、句)异常的使用是基于一种被称为栈展开的机制,当函数抛出异常时,函数会立即停止,之后函数自身会进行栈反解并顺着调用链自动查找与之相匹配的catch语句,找到后便跳转到该语句。9http:/ 14.2.1 异常的使用步骤【例14-5】异常使用。#include using namespace std;class Apublic:A()cout A()endl;A()cout A()endl;void func()A a;cout throw int exception.endl;throw 43;/“栈反解”并清理临时对象a cout throw is failure endl;int main(
5、)try cout try begin endl;func();catch(int)cout catch begin endl;return 0;运行结果:10http:/ 14.2.2 跨越函数的异常处理【例14-6】汽车生产线异常处理。#include#include using namespace std;void carPackage();void shellPackage();int main()carPackage();void carPackage()try shellPackage();catch(string s)cout s endl;cout Carpackage err
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计第14章 异常教学课件 C+ 程序设计 14 异常 教学 课件
限制150内