已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 十二 章 容错及异常处理基础学习目标 掌握异常的抛出和捕获方法; 掌握异常对象的声明方式; 了解异常的接口声明和异常规范的使用。2目录12.1 异常处理的基本思想12.2 抛出异常12.3 捕获异常12.4 异常对象12.5 标准程序库异常处理12.6 异常规范4.2.1 数据在内存中的地址4.2.2 指针及指针运算312.1异常处理的基本思想 程序运行中的有些错误是可以预料的,例如发生诸如除数为零、内存申请不成功、硬盘文件被移动或者被损坏等的情况。程序在运行到发生异常之时,应该对所发生的情况做相关的工作之后再退出,把当前控制权交给上一级的函数。 C+语言提供对处理异常情况的支持。 try、 throw和 catch语句就是 C+语言中用于实现异常处理的机制。412.2抛出异常 抛出异常 throw表达式的语法为: throw 表达式 如果某段程序中发现了自己不能处理的异常,就可以使用 throw表达式抛掷这个异常,将它抛掷给调用者。 throw的操作数表示异常类型,语法上与 return语句的操作数相似,如果程序中有多处要抛掷异常,应该用不同的操作数类型来互相区别,操作数的值不能用来区别不同的异常。 5例 12-1:处理函数中除数为零的异常(简单异常处理函数)#include using namespace std;int Divide(int x, int y)if (y = 0) throw y;return x/y;int main()trycout using namespace std;class ZeroExceppublic:ZeroExcep (): message (“Error by dividing zero!”) /除零异常const char* GetMessage () return message;private:const char* message;double divide(int num, int denum)if (denum = 0) throw ZeroExcep(); /抛出异常return static_cast(num)/denum;8例 12-2(续)void main ()int num1, num2;cout num1num2)try cout x;try cout using namespace std;int fun(int);static int Array = 1,2,3,4,5;int main()try cout = 5) throw i; return Arrayi;14例 12-4(续)运行结果:Array1 = 2Subscription is out of range15例 12-5:使用多个 catch语句#include using namespace std;void MultiCatch(int test)try if (test) throw test;else throw “Value is zero”;catch(int i) cout (num)/denum;此时,如果发生异常,程序抛出的也只一个 ZeroExcep对象,并且用全局对象 ex来初始化该对象。而并不是将全局对象抛出。1812.5标准程序库异常处理 C+标准提供了标准异常层次,这个层次以基类 exception开始,标准程序库抛出的所有异常处理都派生自该基类,这些类构成如下图。 19例 12-6:处理 new失败时的bad_alloc异常#include #include using namespace std;int main()double* pArray10;tryfor(int i=0; i10; i+)pArrayi = new double80000000;cout “Allocated 80000000 doubles in pArray”i”n”;catch (bad_alloc ”memoryAllocationException.what()endl;return 0;20例 12-6(续)运行结果:Allocated 80000000 doubles in pArray0Allocated 80000000 doubles in pArray1Exception occurred; Allocation Failure21小结本章我们介绍了使用 throw语句抛出异常对象,使用 try-catch语句捕获异常对象,从而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年农业种植技术创新与挑战报告
- 2026年中小学体育创新教学实践报告
- 汉字部首表意功能在小学低年级识字教学中的应用效果分析课题报告教学研究课题报告
- 2026年环保行业碳中和技术创新报告及循环经济模式报告
- 2026年可再生能源海上风电技术报告及并网效率报告
- 医学26年:CKD3期管理要点解读 查房课件
- 2026年古茗兼职销售员服务合同二篇
- 北京市中央美术学院附属实验学校2026年高三下期化学试题期末试题含解析
- 护理实践:静脉输液技巧与注意事项
- 肾素 - 血管紧张素 - 醛固酮系统在心房结构重构与心房颤动中的作用机制及临床意义探究
- 2025年河北省地级市联考遴选笔试真题解析附答案
- 2026科技日报社招聘应届高校毕业生7人考试备考试题及答案解析
- 广西能汇投资集团有限公司招聘笔试题库2026
- 监理安全管理制度和预案(3篇)
- 2026校招:华泰证券笔试题及答案
- 2026年1月浙江省高考(首考)化学试题(含标准答案)
- 小学生科学竞赛模拟试卷
- 2026年外事办公室俄语翻译面试易错题集及答案深度解析
- 2026年水利工程质量检测员网上继续教育考试题库200道含答案(基础题)
- 绿色科技赋能农业
- 2026年宜宾人才发展集团有限公司招聘备考题库及参考答案详解1套
评论
0/150
提交评论