- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 异常处理 C++语言程序设计教程 第11章 C++输入输出流 * 第13章 异常处理 学习目标 掌握try-throw-catch异常处理机制; 能使用异常处理机制处理程序中常见的异常; 了解标准异常处理类的内容; 能用标准异常处理类处理new、越界类型的异常; C ++语言程序设计教程 第13章 异常处理 * 一般而言,即使写得很好的程序也可能遇到错误和异常情况。在一个软件系统中,各个软件之间是相互依赖的,它们离不开诸如网络系统、文件系统等外部设施,以及第三方插件、函数库等外部代码,而且还依赖用户的输入,这些都可能产生异常情况,当异常发生时,若不对其加以控制和处理,程序往往可能会终止运行或出现莫名其妙的情况,甚至导致系统的崩溃。因此,在程序设计时,当实现分析程序运行时可能出现的“异常”情况,做好“发现”异常的准备,并且,在“异常”发生时,要针对不同的“异常” 情况进行相应的处理。 一般而言,异常的检测和处理要完成下列任务之一: 1)让“用户”知道程序出现了异常,允许“用户”选择异常处理方式,并继续使用程序。 2)让“用户”知道程序出现了异常,退出程序的执行,并做好系统资源回收等“善后”工作,尽量不影响计算机系统中其它程序的正常运行。 3)在程序发生异常时,能够根据预先设定的异常处理策略进行异常处理,能够在不打扰“用户”的情况下继续程序的运行。 C + +语言程序设计教程 第13章 异常处理 1. 异常的概念 * 异常是一种错误处理机制。程序的错误通常包括:语法错误、逻辑错误、运行异常。语法错误出现在程序编译时,称为编译时错误,逻辑错误和运行错误出现在程序运行时,称为运行时错误(run-time)。 语法错误指在编写程序时,程序中的关键字拼写错、标识符未定义、控制结构不完整、程序语句不合乎编译器的语法规则等等,这种错误在编译、连接时由编译器指出。 逻辑错误是指由于编程者对问题的理解不够造成算法设计有误,导致程序虽然能顺利运行,但是没有得到预期的结果,这类错误通过调试与测试发现。 运行异常(exception)是指指程序在运行的过程中由于意外的结果,运行环境问题造成程序异常终止,如内存空间不足、打开文件不存在、文件读写不成功、执行了除0操作等。 导致程序运行错误虽然是无法避免,但是可以预料,为了保证程序的健壮性,必须要在程序中对运行错误进行预见性处理。 C++的异常处理机制可以在一定程度上减少程序异常所带来的风险,提高程序的健壮性。 C + +语言程序设计教程 第13章 异常处理 1. 异常的概念 * 处理异常的方法很多,其中最直接的办法是调用C++中的exit()或abort()函数终止程序的执行,exit() 与abort()函数原型在头文件Cstdlib中声明,两者的区别是exit()在中止程序运行前,会关闭被程序打开的文件、调用全局和static类型对象的析构函数等;而abort()什么都不做。使用exit()与abort()来处理异常显得很机械,有的异常需要进行更复杂的处理。 以往的异常捕获方式是利用if语句检查调用函数的返回值,或者在函数调用之前检查,如在求两个数的商时就需要在函数前检查除数是否为0来捕获、防止异常: float quotient(int a, int b) { return a/(float)b; } … cinab; if (b==0) //捕获异常 coutDivide 0 !endl; else couta/b=quotient(a,b); C + +语言程序设计教程 第13章 异常处理 2. 异常处理 * 这种处理机制有如下缺点: (1) 每使用quotient()一次, 就必须利用if语句检查一次,使得程序对正常执行过程的描述与对异常的处理交织在一起,程序的易读性不好。 (2) 若异常信息在函数中返回,会破坏程序的逻辑性。如:原来没有返回值的函数,要定义成返回值;对原来有返回值的函数无法定义异常信息返回;象构造函数、析构函数这类由程序自动调用,又没有返回值的特殊函数,就没有办法利用返回值返回异常。 为此,C++提供了异常处理解决方案。 C + +语言程序设计教程 第13章 异常处理 2. 异常处理 * C++的异常处理引入了3个关键字try(检测异常)、throw(抛出异常)和catch(捕获异常),利用这种结构化的形式来描述异常处理过程。 try负责监视可能
您可能关注的文档
- 第周开机管理.ppt
- 清华微积分高等数学课件第五讲导数与微分一.ppt
- a计算成员的建立与应用.ppt
- 海洋石油QHSE系列培训装卸与搬运安全.ppt
- 第十章其他先进生产方式生产与运作管理.ppt
- 填料吸收塔精细简化版.ppt
- §自然坐标表示平面曲线运动中的速度和加速度.ppt
- 第0章数字电路基础.ppt
- 第课开机关机.ppt
- CDROM托盘利用Think的拆模设计.ppt
- 2025年贵州工业职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年西昌民族幼儿师范高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年西藏警官高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年贵州工商职业学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 2025年贵州工商职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年贵州农业职业学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年许昌职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年许昌职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
最近下载
- 《幼儿园游戏化课程实施策略研究国内外文献综述》4300字.docx
- 高一人音版音乐教学:《欧洲与拉丁美洲音乐》教学设计.doc
- 电力机车制动机03.pptx VIP
- 电力机车制动机04.pptx VIP
- 四川省成都市成华区2022-2023学年九年级上学期期末化学试卷.docx VIP
- 2022-2023学年四川省成都市青羊区九年级上学期期末考试化学试卷含详解.pdf VIP
- 污水处理系统的防火防爆(必威体育精装版版).docx VIP
- 四川省成都市学校2023-2024学年九年级上学期期末化学试卷(含解析).pdf VIP
- 53天天练六年级数学下册课堂练(人教)附答案解析.doc
- 中考数学备考策略与方法.pptx VIP
文档评论(0)