收藏 分享(赏)

第11章异常处理.doc

上传人:gnk289057 文档编号:8124562 上传时间:2019-06-09 格式:DOC 页数:8 大小:41.50KB
下载 相关 举报
第11章异常处理.doc_第1页
第1页 / 共8页
第11章异常处理.doc_第2页
第2页 / 共8页
第11章异常处理.doc_第3页
第3页 / 共8页
第11章异常处理.doc_第4页
第4页 / 共8页
第11章异常处理.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、第 11 章 异常处理111 本章提要(1) 异常处理是 C+提供的一种捕获和处理程序错误的结构化机制。异常的常见例子有 new 无法取得所需内存、数组下标越界、运算溢出、除数为 0 以及函数的无效参数等。(2) 异常处理通过关键字 throw、try 和 catch 实现。try 块中放置出错时产生异常的代码,try 块后面是一个或多个 cateh 块(称为异常处理器)。每一个 catch块处理一种类型的异常。throw 语句用在被调用函数中抛出异常。异常匹配仅与异常的类型有关。(3) 发生异常之后,控制不会返回异常抛出点。程序执行相应 catch 块,然后跳过所有后续 catch 块恢复执

2、行。(4) 异常指定可以用参数形式声明一个函数允许抛出的异常类型。(5) 一个异常处理程序如果不能确定异常的处理方式,可以在 catch 块中在把异常抛给上一级调用函数。(6) 异常处理应用于大型项目中以统一方式处理整个项目的异常。112 程序举例在异常处理机制中,throw 语句抛出异常,catch 语句捕获异常,异常匹配仅与异常的类型有关。下面是一个多种异常类型匹配的例子。例 11-1 不同类型的异常测试/ch11_1.cpp 不同类型的异常测试#include int test(char* p,double e,int a)int flag=1;try /检测异常if(*p=0if (a

3、70)throw a;catch(char s) /捕获处理异常flag=0;coutpasswordearningsage;if(test(password,earnings,age)coutvoid fun(int,double);void test(int,double) throw(int,double); /指定异常const int intMax=10000;const double floatMax=1e12;void main()fun(10200,3.14);fun(2323,1.2e20);void fun(int k,double x)trytest(k,x);catch

4、(int)coutintMax) throw a;if(xfloatMax) throw x;运行结果:Integer data is too large.Float data is too large.在 这 个 例 子 中 , 主 函 数 main()调 用 函 数 fun(),又 由 fun()调 用 函 数 test()。函 数 test()抛 出 int 和 double 类 型 的 异 常 。 函 数 fun()捕 获 test()抛 出 的 异 常 并进 行 处 理 。113 习题举例一、阅读下列程序,说出输出结果1. 程序如下/ch11_ex1_1.cpp#include in

5、t Div(int x,int y)if(y=0)throw y;return x/y;void main()trycoutvoid fun();class Exptpublic:Expt() Expt() const char * Why() const return “Expt“; ;class Testpublic:Test() cout#include void fun();class Testpublic:Test()cout#include void funl();void fun2();void fun3();class Exptpublic:Expt() Expt() cons

6、t char * Why() const return “Expt “; ;class Messagepublic:Message(const char* s)msg=new charstrlen(s)+ 1;strcpy(msg,s);cout“Constructor: “msgendl;Message()cout“Destructor: “msgendl;delete msg;private:char *msg;void main()funl();void funl()Message m(“funl()“);tryfun2();catch(const Exptvoid fun2()Mess

7、age m(“fun2()“);fun3();void fun3()Message m(“fun3()“);cout“l am ready to throw an exception“endl;throw Expt();二、编程题1. 设计一个 Exception 抽象类,在此基础上派生一个 OutOfMemory 类响应内存不足,一个 RangeError 类响应输入的数不在指定范围内。114 上机练习题及上机指导11.4.1 上机要求1. 上机调试关于异常处理的例子,理解异常的捕获、匹配与再抛出,掌握异常处理机制的功能和使用方法。2. 上机调试相关例子,理解掌握异常处理中的构造与析构。11.4.2 上机练习题及指导1 上机调试本书例 11-1 中程序,熟悉一般异常处理。2 上机调试本书例 11-2 中程序,熟悉抛出列表的使用。3 上机调试教材中的例 11-3,掌握异常处理中的构造与析构。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报