第20章异常处理(免费阅读).pptVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第20章 异 常 处 理 杨章伟 e-mail:yang505412@163.com 课程内容安排 错误与异常 异常处理的实现 类和结构的异常处理 异常处理机制 字符串库 小结 习题 错误与异常 在实际的应用程序设计中,不可避免地会出现程序错误和异常。因此,异常处理是每一种程序设计语言都必须包含的一个部分,C++的异常处理功能非常完善,使用户能够很快发现及捕获异常,尽快地完成程序调试。 读者可以理解,在实际程序设计中,无论用户的编码技术有多好,出现错误的可能性都很大。因此,程序都必须能处理可能出现的错误和异常。 什么是异常 简单地说,异常就是程序在运行过程中,由于使用环境的变化及用户的操作而产生的错误。例如,内存不足时,应用程序请求分配内存,程序中出现了以零为除数的错误;打印机未打开,导致程序运行中挂接这些设备失败等,都会引发异常。对这些错误,应用程序如果不能进行合适的处理,将会使程序变得非常脆弱,甚至不可使用。 异常处理对于编写健壮的软件来说无疑是非常重要的,是否有完善的异常处理机制也是评价某一程序设计语言优劣的一个重要标准。 异常处理的基本思想 处理异常的基本思想是:在底层发生的问题,逐级上报,直到有能力可以处理异常的那级为止。或者说,在应用程序中,如果某个函数发现了错误并引发异常,这个函数就将该异常向上级调用者传递,请求调用者捕获该异常并处理该错误。如果调用者不能处理该错误,就继续向上级调用者传递,直到异常被捕获错误被处理为止。 如果程序最终没有相应的代码处理该异常,那么该异常最后被C++系统所接受,C++系统就简单地终止程序运行。 【范例20-1】异常处理的基本思想。该范例实现当除数为零时,停止运行并给出提示信息 。 使用try/catch捕获异常 通过前面的介绍,读者已经了解到,对异常的处理之前首先需要捕获到异常。在C++中,提供了语句try/catch来捕获异常,其中,try和catch分别用于定义异常和定义异常处理。定义异常是将可能产生错误的语句放在try语句块中。其格式是: try { 可能产生错误的语句 } 定义异常处理是将异常处理的语句放在catch语句块中,以便异常被传递来时处理。通常,异常处理是放在try语句块后的由若干个catch语句组成的程序 使用throw抛出异常 抛出异常(也称为抛出异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要 【范例20-2】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理 。 类和结构的异常处理 C++异常处理的真正能力不仅在于它能处理各种不同类型的异常,还在于它具有在异常抛弃前为构造的所有局部对象自动调用析构函数的能力。 当在程序中找到一个匹配的catch异常处理后,如果catch()语句的异常类型声明是一个值参数,则其初始化方式是复制被抛弃的异常对象;如果catch()语句的异常类型声明是一个引用,则其初始化方式是使该引用指向异常对象。 异常处理机制 C++异常处理机制是一个用来有效地处理运行错误的非常强大且灵活的工具,它提供了更多的弹性、安全性和稳固性,克服了传统方法所带来的问题。 事实上,C++中的异常处理机制是一种把控制权从异常发生的地点转移到一个匹配的处理函数或功能块的机制。其中,异常可以是内建数据类型变量,也可以是对象。一般来说,异常处理机制包括4个部分。 try语句块:即一个定义异常的语句块。 catch语句块:即一个或多个和try语句块相关的处理,它们放在catch语句块中。 throw表达式:即抛出异常语句。 异常本身。 本章主要介绍了C++中关于异常处理及其机制的内容。异常处理是所有程序设计语言都需要包含的一个部分,C++的异常处理机制主要由定义异常、定义异常处理和throw语句等组成。对于C++中处理异常的语句主要包括:try语句、catch语句和throw语句等。对于不同类型的异常处理,其throw语句后的表达式类型较为重要,尤其是当处理类型为结构体时。 小结 1.打开文件发生错误是经常发生的情况。设计一个程序,该程序可以处理一个处理文件时发生的异常。 【解答】该试题主要考查C++异常

文档评论(0)

didala + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档