C++大学基础教程 第13章异常处理 北京邮电大学电信工程学院 计算机技术中心 2021/224
2021/2/24 1 C++大学基础教程 第13章 异常处理 北京邮电大学电信工程学院 计算机技术中心
◇程序设计的要求之一就是程序的健 壮性。希望程序在运行时能够不出 或者少出问题。但是,在程序的实 程序不能正常运行。异常处 际运行时,总会有一些因素会 ( Exception handling)就是要提 出或者是研究一种机制,能够较好 的处理程序不能正常沄行的问题
程序设计的要求之一就是程序的健 壮性。希望程序在运行时能够不出 或者少出问题。但是,在程序的实 际运行时,总会有一些因素会导致 程序不能正常运行。异常处理 (Exception Handling)就是要提 出或者是研究一种机制,能够较好 的处理程序不能正常运行的问题
第十三章异常处理 131异常和异常处理 132C++异常处理机制 133用类的对象传递异常 134异常处理中的退栈和对象析构
第十三章 异常处理 13.1 异常和异常处理 13.2 C++异常处理机制 13.3 用类的对象传递异常 13.4 异常处理中的退栈和对象析构
13.1异常和异常处理
13.1 异常和异常处理
131.1异常及其特点 ◆异常( Exceptions)是程序在运行时可能出 现的会导致程序运行终止的错误。 ◆编译系统检查出来的语法错误,导致程序运行 结果不正确的逻辑错误,都不属于异常的范围。 ◆异常是一个可以正确运行的程序在运行中可能 发生的错误。 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -5- 13.1.1 异常及其特点 异常(Exceptions)是程序在运行时可能出 现的会导致程序运行终止的错误。 编译系统检查出来的语法错误,导致程序运行 结果不正确的逻辑错误,都不属于异常的范围。 异常是一个可以正确运行的程序在运行中可能 发生的错误
131.1异常及其特点 ◆常见的异常,如: 系统资源不足。如内存不足,不可以动态申 请内存空间;磁盘空间不足,不能打开新的 输出文件,等。 ■用户操作错误导致运算关系不正确。如出现 分母为0,数学运算滋出,数组越界,参数 类型不能转换,等。 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -6- 13.1.1 异常及其特点 常见的异常,如: ◼ 系统资源不足。如内存不足,不可以动态申 请内存空间;磁盘空间不足,不能打开新的 输出文件,等。 ◼ 用户操作错误导致运算关系不正确。如出现 分母为0,数学运算溢出,数组越界,参数 类型不能转换,等
131.1异常及其特点 ◆异常有以下的一些特点: 偶然性。程序运行中,异常并不总是会发生 的。 ■可预见性。异常的存在和出现是可以预见的。 严重性。一旦异常发生,程序可能终止,或 者运行的结果不可预知。 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -7- 13.1.1 异常及其特点 异常有以下的一些特点: ◼ 偶然性。程序运行中,异常并不总是会发生 的。 ◼ 可预见性。异常的存在和出现是可以预见的。 ◼ 严重性。一旦异常发生,程序可能终止,或 者运行的结果不可预知
1312异常处理方法及举例 ◆对于程序中的异常,通常有三种处理的 方法 不作处理。很多程序实际上就是不处理异常 的。 ■发布相应的错误信息,然后,终止程序的运 行。在C语言的程序中,往往就是这样处理 的。 适当的处理异常,一般应该使程序可以继续 运行。 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -8- 13.1.2 异常处理方法及举例 对于程序中的异常,通常有三种处理的 方法: ◼ 不作处理。很多程序实际上就是不处理异常 的。 ◼ 发布相应的错误信息,然后,终止程序的运 行。在C语言的程序中,往往就是这样处理 的。 ◼ 适当的处理异常,一般应该使程序可以继续 运行
1312异常处理方法及举例 一般来说,异常处理( Exception Handling) 就是在程序运行时对异常进行检测和控制。 ◆而在C++中,异常处理(EH)就是用C++提 供的try- throw- catch的模式进行异常处理 的机制。 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -9- 13.1.2 异常处理方法及举例 一般来说,异常处理(Exception Handling) 就是在程序运行时对异常进行检测和控制。 而在C++中,异常处理(EH)就是用C++提 供的try-throw-catch的模式进行异常处理 的机制
◆例13.1程序将连续地输入两个实数,通过调用函数,返回这 两个数相除的商。并且要注意除数不能为0 ∥6131用一般的方法处理除法溢出 include include double divide(double a, double b) if(b==0) ∥测分母是不是为0 cout<<"除数不可以等于0P<<endl; aborto; ∥调用 abort函数终止运行 return al/b 2021/2/24 北京邮电大学电信工程学院计算机技术中
2021/2/24 北京邮电大学电信工程学院计算机技术中心 -10- 例13.1 程序将连续地输入两个实数,通过调用函数,返回这 两个数相除的商。并且要注意除数不能为0。 //例13.1 用一般的方法处理除法溢出 #include #include double divide(double a, double b) { if (b == 0) //检测分母是不是为0 { cout << "除数不可以等于0 !"<<endl; abort(); //调用abort函数终止运行 } return a/b; }