C++程序设计 第10章 异常处理
- 格式:ppt
- 大小:308.50 KB
- 文档页数:40


1程序控制结构,特别是异常:(1)异常(Exception)——程序检测到的运行时刻不正常的情况。
如被0 除、数组越界访问或空闲存储内存耗尽等等。
(2)异常处理——是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况时相互通信的机制。
(3)这里的异常是指软件异常(4)抛掷异常的程序段……throw 表达式;(异常抛出)……(5)捕获并处理异常的程序段try复合语句(保护段)catch(异常类型声明)复合语句(处理段)catch(异常类型声明)复合语句(处理段)……(6)异常处理的执行过程如下:①程序通过正常的顺序执行到达try语句,然后执行try块内的保护段。
②如果在保护段执行期间没有引起异常,那么跟在try块后的catch语句就不执行,程序从最后一个catch语句后面的语句继续执行下去。
③如果在保护段执行期间或在保护段调用的任何函数中(直接或间接的调用)有异常被抛掷,则从通过throw创建的对象中创建一个异常对象(隐含调用拷贝构造函数),程序转到catch处理段。
④如果匹配的catch处理器未找到,则terminate()将被自动调用,该函数的默认功能是调用abort终止程序。
⑤如果找到了一个匹配的catch处理程序,且它通过值进行捕获,则其形参通过拷贝异常对象进行初始化。
在形参被初始化之后,“展开栈”的过程开始。
这包括对那些在与catch处理器相对应的try块开始和异常丢弃地点之间创建的(但尚未析构的)所有局部对象的析构。
3.委托的使用:答:(1)委托定义;(2)用委托声明变量;(3)准备委托函数;(4)委托调用;(5)委托赋值。
4 this指针或引用:(1)面向对象语言提供的一个特殊对象指针,this指针是一种隐含指针,每个非静态的成员函数都有一个this指针,用来标记成员函数操作哪个对象的数据成员。
(2)this是为了实现代码共享,C++和C一样:函数的作用是减少代码开销。
C语言异常处理。
三C语言中的异常处理在C语言中异常处理一般有这么几种方式:1.使用标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于<stdlib.h>头文件中。
2.使用assert(断言)宏调用,位于头文件<assert.h>中,当程序出错时,就会引发一个abort()。
3.使用errno全局变量,由C运行时库函数提供,位于头文件<errno.h>中。
4.使用goto语句,当出错时跳转。
5.使用setjmp,longjmp进行异常处理。
接下来,我们就依次对这几种方式来看看到底是怎么做的:我们仍旧以前面处理除数为0的异常为例子。
1.使用exit()函数进行异常终止:1#include <stdio.h>2#include <stdlib.h>3double diva(double num1,double num2) //两数相除函数4{5double re;6 re=num1/num2;7return re;8}9int main()10{11double a,b,result;12 printf("请输入第一个数字:");13 scanf("%lf",&a);14 printf("请输入第二个数字:");15 scanf("%lf",&b);16if(0==b) //如果除数为0终止程序17 exit(EXIT_FAILURE);18result=diva(a,b);19 printf("相除的结果是: %.2lf\n",result);20return0;21}其中exit的定义如下:_CRTIMP void __cdecl __MINGW_NOTHROW exit (int)__MINGW_ATTRIB_NORETURN;exit的函数原型:void exit(int)由此,我们也可以知道EXIT_FAILURE宏应该是一个整数,exit()函数的传递参数是两个宏,一个是刚才看到的EXIT_FAILURE,还有一个是EXIT_SUCCESS从字面就可以看出一个是出错后强制终止程序,而一个是程序正常结束。