网站大量收购闲置独家精品文档,联系QQ:2885784924

第3章异常处理.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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负责监视可能

您可能关注的文档

文档评论(0)

phljianjian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档