欢迎来到天天文库
浏览记录
ID:46303288
大小:217.50 KB
页数:12页
时间:2019-11-22
《第20章+异+常+处+理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第20章异常处理杨章伟e-mail:yang505412@163.com课程内容安排错误与异常异常处理的实现类和结构的异常处理异常处理机制字符串库小结习题错误与异常在实际的应用程序设计中,不可避免地会出现程序错误和异常。因此,异常处理是每一种程序设计语言都必须包含的一个部分,C++的异常处理功能非常完善,使用户能够很快发现及捕获异常,尽快地完成程序调试。读者可以理解,在实际程序设计中,无论用户的编码技术有多好,出现错误的可能性都很大。因此,程序都必须能处理可能出现的错误和异常。什么是异常简单地说,异常就是程序在运行过程中,由于使用环境的变化及用户的操作而产生的错误。例如,内存不足时
2、,应用程序请求分配内存,程序中出现了以零为除数的错误;打印机未打开,导致程序运行中挂接这些设备失败等,都会引发异常。对这些错误,应用程序如果不能进行合适的处理,将会使程序变得非常脆弱,甚至不可使用。异常处理对于编写健壮的软件来说无疑是非常重要的,是否有完善的异常处理机制也是评价某一程序设计语言优劣的一个重要标准。异常处理的基本思想处理异常的基本思想是:在底层发生的问题,逐级上报,直到有能力可以处理异常的那级为止。或者说,在应用程序中,如果某个函数发现了错误并引发异常,这个函数就将该异常向上级调用者传递,请求调用者捕获该异常并处理该错误。如果调用者不能处理该错误,就继续向上级调用者传
3、递,直到异常被捕获错误被处理为止。如果程序最终没有相应的代码处理该异常,那么该异常最后被C++系统所接受,C++系统就简单地终止程序运行。【范例20-1】异常处理的基本思想。该范例实现当除数为零时,停止运行并给出提示信息。使用try/catch捕获异常通过前面的介绍,读者已经了解到,对异常的处理之前首先需要捕获到异常。在C++中,提供了语句try/catch来捕获异常,其中,try和catch分别用于定义异常和定义异常处理。定义异常是将可能产生错误的语句放在try语句块中。其格式是:try{可能产生错误的语句}定义异常处理是将异常处理的语句放在catch语句块中,以便异常被传递来时
4、处理。通常,异常处理是放在try语句块后的由若干个catch语句组成的程序使用throw抛出异常抛出异常(也称为抛出异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重
5、要【范例20-2】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理。类和结构的异常处理C++异常处理的真正能力不仅在于它能处理各种不同类型的异常,还在于它具有在异常抛弃前为构造的所有局部对象自动调用析构函数的能力。当在程序中找到一个匹配的catch异常处理后,如果catch()语句的异常类型声明是一个值参数,则其初始化方式是复制被抛弃的异常对象;如果catch()语句的异常类型声明是一个引用,则其初始化方式是使该引用指向异常对象。异常处理机制C++异常处理机制是一个用来有效地处理运行错误的非常强大
6、且灵活的工具,它提供了更多的弹性、安全性和稳固性,克服了传统方法所带来的问题。事实上,C++中的异常处理机制是一种把控制权从异常发生的地点转移到一个匹配的处理函数或功能块的机制。其中,异常可以是内建数据类型变量,也可以是对象。一般来说,异常处理机制包括4个部分。try语句块:即一个定义异常的语句块。catch语句块:即一个或多个和try语句块相关的处理,它们放在catch语句块中。throw表达式:即抛出异常语句。异常本身。本章主要介绍了C++中关于异常处理及其机制的内容。异常处理是所有程序设计语言都需要包含的一个部分,C++的异常处理机制主要由定义异常、定义异常处理和throw语
7、句等组成。对于C++中处理异常的语句主要包括:try语句、catch语句和throw语句等。对于不同类型的异常处理,其throw语句后的表达式类型较为重要,尤其是当处理类型为结构体时。小结1.打开文件发生错误是经常发生的情况。设计一个程序,该程序可以处理一个处理文件时发生的异常。【解答】该试题主要考查C++异常处理机制的应用。打开文件需要使用到文件类并创建输入输出流对象,通过调用对象的fail()成员函数判断其是否打开成功。此处需要使用到try/catch语句来进行异
此文档下载收益归作者所有