C++语言程序设计教程第13章异常处理.ppt
第13章 异常处理 C++语言程序设计教程 第11章 C++输入输出流 第13章 异常处理 学习目标 掌握try-throw-catch异常处理机制; 能使用异常处理机制处理程序中常见的异常; 了解标准异常处理类的内容; 能用标准异常处理类处理new、越界类型的异常; C ++语言程序设计教程 第13章 异常处理 程序的错误通常包括:语法错误、逻辑错误、运行异常。 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译、连接时由编译器指出。 逻辑错误是指程序能顺利运行,但是没有实现预期的功能,这类错误通过调试与测试发现。 运行异常(exception)是指程序在运行的过程中由于意外的结果,运行环境问题造成程序异常终止,如内存空间不足、打开文件不存在、文件读些不成功、执行了除0操作等。 导致程序运行异常虽然是无法避免,但是可以预料,为了保证程序的健壮性,必须要在程序中对运行异常进行预见性处理,对运行异常进行预见性处理称为异常处理。 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++提供了一种以结构化的形式来描述异常处理过程的机制。该异常处理机制能够把程序的正常处理和异常处理逻辑分开表示,使得程序的异常处理结构清晰,通过异常集中处理的方法,解决异常异地处理的问题。 C + +语言程序设计教程 第13章 异常处理 13.2 C++的异常处理 异常类型可以是基本数据类型、构造数据类型,还可以是类类型,类型名后可以带变量名(对象),这样就可以像函数的参数传递一样将异常类型表达式的值传入。异常类型为…表示可以捕获任意类型的异常,但catch(…)不能出现在其他捕获语句之前,否则出现编译错误。 异常处理的执行过程如下: (1) 执行try块中的程序语句序列; (2) 如果执行期间没有执行到throw()(没有引起异常),跳过异常处理区的catch语句块,程序向下执行; (3) 若执行期间引起异常,执行throw()语句抛出异常,进入异常处理区,将throw() 抛出的异常类型表达式(对象)依次与catch()中的类型匹配,获得匹配的catch子句将捕获并处理异常。继续执行异常处理区后的语句; (4) 如果未找到匹配(异常未捕获到),自动调用结束函数terminate(),其缺省功能是调用abort()终止程序。 C + +语言程序设计教程 第13章 异常处理 13.2 C++的异常处理 注意: 在VC++6.0 环境中,要使用异常处理机制需进行如下设置: Project→Settings…→在Category中选C++Language→选择Enable
您可能关注的文档
最近下载
- 工程造价审计服务方案.docx VIP
- 22D701-3电缆桥架安装(26.9MB)(26.85MB)5ce2e72e69780631(1).pdf VIP
- CJJ∕T 135-2009 透水水泥混凝土路面技术规程.pdf VIP
- 现场改善管理低成本管理方法终.pptx VIP
- 道路工程材料 课件全套 模块0--4 绪论、岩石与集料--沥青.pptx
- 2025至2030中国鹦鹉养殖行业市场发展分析及细分市场及应用领域与趋势展望研究报告.docx VIP
- 石油设备检修细则.docx VIP
- 间变大细胞淋巴瘤课件.pptx VIP
- 2025年黑龙江省职业教育春季高考考试招生语文全真模拟卷(一)(解析版).docx VIP
- 西班牙介绍-(英文).ppt VIP
原创力文档

文档评论(0)