- 1
- 0
- 约4.02千字
- 约 41页
- 2017-07-14 发布于河南
- 举报
10第十讲——异常处理
第十二章 异常处理;本章主要内容;编译错
编译时通不过,属语法错,最浅层次的错误。
逻辑错
设计缺陷,编译器无法发现,只能靠人工分析跟踪排除,错误层次中等。
运行错
调试时无法发现,运行时才出现,往往由系统环境引起,属可予料但不可避免。必须由语言的某种机制予以控制。;一天,某公司派小张去机场提货,派小王去银行存款。
机场仓库失火,小张没提出货,也没回公司报告,原来一根筋的他在一边看热闹,可公司上下急得团团转。
在去银行路上,小王遇到抢匪打劫,小王立即报警,并报告了公司。马上协助警方追捕抢匪,追回存款,再送银行完成了存款任务。
假设,你是公司经理,你需要什么样的员工?;对于可予料但不可避免的程序错误,不能眼睁睁看着它发生而无所作为(只会用exit()),要将消极等待变为积极预防,还要将预防的处理内容归纳整理,分门别类地作成类。
积极之意是,不能只凭编程经验这种个体性偶然性的做法,而要凭借人人都掌握的规范圆满的处理。
这规范是指在函数的处理中设下陷阱,一旦触发异常,定会被异常处理所收容,统一归口处理。;默认的
程序中断执行。
特制的——用“异常处理”
转而执行特制的处理函数 。;允许从异常抛出点把任意数量的信息以类型安全的方式传给异常处理器;
对于没有抛出异常的代码段,不应有任何额外的系统(时间、空间)开销;
应保证所抛出的任何异常都能被适当的处理器捕获;
通过语言提供的某种语法,程序员可以写出自己的异常处理器;
能够直接应用到多线程程序中;
...
可见异常处理机制实际上是一种运行时通知机制。;由于c/c++是函数性语言,函数的调用是嵌套的,异常的发生地和处理地就很可能不在同一个模块中,逻辑上讲应是嵌套的;
异常一旦发生,则意味着后续语句不可能再执行了。;异常处理的基本思想;异常处理的实现机制;这三个关键字分工明确,各司其职:
throw负责发现异常,抛掷异常对象;若放在函数声明中则又称为异常接口声明;
try设置了一个侦错范围,又叫保护段。其实是划定了一个跳跃的边界;
catch负责处理捕获来的异常(包括继续??掷异常)。
所抛掷的异常对象并非建在函数栈上,而是建在专用的异常栈上,故可以跨越函数而传递给上层,;每个catch()相当于一段函数代码;
每个throw则相当于一个函数调用;
每个try块至少跟一个catch();
一个程序可设置个数不定的try 、throw 和 catch。它们只有逻辑上的呼应,而无数量上的对应关系,且不受所在函数模块限制;
异常抛掷点往往距异常捕获点很远,它们可以不在同层模块中;
甚至有的throw我们看不到在哪,实际上在我们所调用的系统函数中,在标准库中;
程序中try块可以并列、可以嵌套;
由于异常处理机制是按类型匹配的,因此catch的参数可以没有参数名,除非你非要使用参数。;C++的异常处理机制有何特色?
C对出错的处理是将所有错误予以编码(返回码),一码一错。程序员编程时,通过在主调函数中检查出现的返回码,给与相应的处理。这种方法繁琐又不规范。
C++则是将形形色色的错误归结抽象为“类型错”,统统交给throw抛掷;将出错处理统一为catch 调用。这就为程序员编程制定了统一的规范,也就是运行协议。
“异常处理”实际是个动态概念。其处理机制是靠类型匹配,这恰是运行时才能发生的事。;C对出错处理的返回码机制 ,与C++的异常处理机制有何不同?
1。C将正常逻辑与异常逻辑混在一起。每个函数调用后都要用正常逻辑(如if)加以判断,以过滤出异常。这样使子函数的错误扩散到了其所有的调用者中,形成了一个混杂的怪异链。
2。增加了用于处理很少出现的特殊情况的运行费用。尤其对于C++,其成员函数通常只有几行代码,但函数很多,若每个函数都使用返回码技术,则臃肿不堪。
3。类中还有构造、拷贝构造等无返回值的函数,它们出错处理的权力不应被剥夺。
4。返回码靠的是预定的数字代号来传递信息,所能携带的信息量少且呆板,远少于抛掷的对象所携带的信息量。;异常处理机制的图示;异常处理的实现机制;例12-1处理除零异常;异常处理的不唤醒机制;异常处理中的构造与析构;例12-2 异常处理时的析构;class Demo
{ public:
Demo()
{ cout构造 Demo.endl;
}
~Demo()
{ cout析构 Demo.endl;
}
};
void MyFunc()
{ Demo D;
cout在MyFunc()中抛掷Expt类异常。endl;
throw Expt();
};void main()
{ cout在main函数中。endl;
try
{ cout在try块中,调用MyFunc()。 endl;
M
您可能关注的文档
- (演示)计算机程序设计基础(c语言)-第5章_函数(简单版 无变量作用域).ppt
- 01-1 建设工程招标代理委托合同.doc
- 03-数据结构-栈与队列2.doc
- 04-宝石学基础-考试试题四(附解析)-宝石学.doc
- 0404 2004年4月劳动法自考真题.doc
- 04_第三章:TrackStar(直译:跟踪之星)应用程序.doc
- 07-09年北外硕士研究生入学考试英汉同声传译专业试卷.doc
- 03Java知识.ppt
- 07.Java的异常处理.ppt
- 082-2009 中国联通WCDMA Home NodeB与HMS接口测试规范v1.0.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2023年浙江省公务员考试行测真题及答案(A卷).doc VIP
- 2025年河北对口医学题库及答案.doc VIP
- 餐饮美学基础 课件 模块四 餐厅民俗美学.pptx
- (山东)建筑与结构工程施工资料表格汇编(鲁JJ001-074).pdf VIP
- 餐饮美学基础 课件 模块三 餐厅环境美学.pptx
- 2025年长沙电力职业技术学院单招笔试职业技能考核试题库含答案解析.docx VIP
- 雷克萨斯-Lexus NX-产品使用说明书-NX200-ZGZ10L-AWXLPC2-NX200NX200t_OM78064C_01-1412-001.pdf VIP
- 小学语文五年级第二学期第二单元整体作业设计.docx
- 外研版小学英语(三年级起点)三年级上册Module2-Unit1同步检测.doc VIP
- 2025年河南省平顶山市中考生物试卷(含答案).pdf
原创力文档

文档评论(0)