- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 异常处理 主要内容 异常和异常处理 C++的异常处理方法 异常类的设计 异常抛出和处理的两种方式 8.1 异常和异常处理 两种程序错误 编译错误(语法错误) 运行期错误 逻辑错误 不可预料,一旦发现了逻辑错误,专门为其写一段处理错误的代码,就可避免错误的发生(如:数组下标溢出检查)。 8.1 异常和异常处理 两种程序错误 运行期错误 运行异常 可以预料,但不能避免。由系统运行环境造成,例如: 内存空间不足。 在硬盘上的文件被挪离,或者软盘没有放好,导致程序运行中文件打不开而发生异常。 程序中发生除0的代码,导致系统除0中断。 打印机未打开,凋制解调器掉线等,导致程序运行中挂接这些设备失败等。 8.1 异常和异常处理 异常(Exception) 异常是程序可能检测到的运行时刻不正常的情况。 用户输入错误 设备故障 物理限制 代码错误 8.1 异常和异常处理 异常处理 异常处理是一种程序定义的错误,它对程序的逻辑错误进行设防,对运行异常加以控制。 C++中,异常处理是对所能预料的运行错误进行处理的一套实现机制。 异常处理的任务就是使程序的运行过程能从异常错误中恢复过来继续执行。 8.1 异常和异常处理 传统的异常处理方法 在早些时期,C++本身并没有处理运行期错误的能力。取而代之的是那些传统的C方法。 三类设计策略 返回一个状态码来表明成功或失败。 把错误码赋值给一个全局标记并让其他的函数来检测。 二者相似之处:都提供一种机制来报告错误,但是二者却都不能保证错误被处理。 8.1 异常和异常处理 传统的异常处理方法 三类设计策略 终止整个程序。 exit() 表明程序被成功终止,或者它可以在遇到运行期错误的时候被调用。 在把控制权交还给运行环境之前,exit()首先会清空流和关闭打开的文件。 abort() 表示程序被意外终止,不会清空流和关闭打开的文件。(举例:P178) 8.1 异常和异常处理 说明 终止程序在极限环境下或者在调试阶段是可以被接受的。 abort()和exit()不应该在面向对象环境中使用,甚至即使在调试阶段,因为他们并没有意识到C++对象模型的存在。 exit()和abort()不销毁对象,并不调用这些局部对象的析构函数。 8.1 异常和异常处理 传统的异常处理方法 存在问题 P179 8.2 C++的异常处理方法 异常处理的基本思想 在C++中,异常是指从发生问题的代码区域传递到处理问题的代码区域的一个对象。 处理异常后,函数k()和g()都退栈,然后程序在函数f()中继续运行。 8.2 C++的异常处理方法 异常处理的基本思想 异常处理的基本思想是分离异常的抛出和异常的处理。 这样底层的函数可以着重解决具体的问题,而不必过多地考虑对异常的处理。 上层调用者可以在适当的位置设计对不同类型异常的处理,这在大型程序中是非常必要的。 8.2 C++的异常处理方法 异常处理的基本方法 当程序中出现异常时抛出异常,用来通知系统发生了异常,然后由系统捕捉异常,并交给预先安排的异常处理程序段来处理异常。 C++异常处理结构 8.2 C++的异常处理方法 8.2 C++的异常处理方法 8.2 C++的异常处理方法 异常处理语句 异常类 大部分情况下,异常类可以为空,只用来作为识别各个不同异常的标志。 例如: class DivideZero{}; 8.2 C++的异常处理方法 异常处理语句 抛出异常 在程序中可能出现异常的地方用throw语句抛出异常。 语法格式: throw 表达式; 表达式表示异常类型,可以抛出基本数据类型异常(如int和char等)可以是任意类型的一个对象。可以抛出复杂数据类型异常,如结构体(在C++中结构体也是类)和类。 如果程序中有多处要抛出异常,应该用不同的操作数类型来互相区别,操作数的值不能用来区别不同的异常。 8.2 C++的异常处理方法 异常处理语句 抛出异常 C++的异常处理必须由调用者主动检查。一旦抛出异常,而程序不捕获的话,那么abort()函数就会被调用,程序被终止; 8.2 C++的异常处理方法 在Visual?C++中,如果以abort函数终止程序,则会在debug模式运行时弹出如下图所示对话框。 8.2 C++的异常处理方法 异常处理语句 捕捉异常 try { 复合语句 } 当程序运行时未出现异常,则顺序执行try模块中的语句。 一旦系统捕捉到异常发生,就中止当前的程序执行,转去执行相应的catch语句中的异常处理语句。 8.2 C++的异常处理方法 异常处理语句 处理异常 catch(异常类或异常类对象) { //异常处理语句 } 异常处理语句中可包含返回语句,则整个程序结束。 不
您可能关注的文档
- 合并同类项(教案).doc
- 和名师对话·高三课标版物理1-4运动图像追击相遇.ppt
- 河北省藁城一中2010-2011学年高二下学期第一次月考(数学理)(无答案).doc
- 河南省沈丘县第三高级中学高一地理下期第一次月考.doc
- 湖北省鄂南高中、黄石二中、鄂州高中2014届高三五月联合模拟考试文综地理试题-Word版含答案.doc
- 湖北省武汉市2012届高中毕业生四月调研测试-理综.doc
- 湖南省长沙市长郡中学2015届高三上学期第二次月考数学(理)试题(解析版).doc
- 湖南省湘潭市2010届高三第三次模拟考试理科综合试题.doc
- 户外导视选址建议.ppt
- 沪教高三数学第一轮复习:二项式定理和统计初步.ppt
文档评论(0)