文档介绍:《C++面向对象程序设计》教学内容
第1章 C++概述
第2章类和对象
第3章面向对象程序设计概述
第4章进一步学习类和对象
第5章堆与复制构造函数
第6章继承性:派生类
第7章运算符重载
第8章虚函数和多态性
第9章模板
第10章类库和C++的标准模板库STL
第11章输入输出流
第12章异常处理
第12章异常处理
异常处理的概念
C语言处理异常的方法
C++语言的异常处理方法
异常类和C++标准异常
异常处理的概念
异常(Exception) 是程序可能检测到的运行时刻不正常的情况。
最常见的异常包括
除数为0,数组越界访问,磁盘或者光盘读写失败,无效数据,内存耗尽,网络不通等。
异常总是代表着某些不该发生的事情发生了
异常错误
在程序运行阶段由于系统异常原因而产生的错误称为异常错误
异常错误与程序设计错误是两码事
异常错误与程序设计错误
程序设计错误是指程序员在设计程序时由于人为因素所产生的错误。
异常错误是在程序运行时由于系统异常原因而产生的,不是程序员的失误所致。
如果不排除程序设计错误,程序就不能通过编译检查或运行结果不对。
如果不处理异常错误,程序执行时遇到异常情况就会突然终止或失控,使用户感到莫名其妙。
一个异常错误的例子
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char ** argv)
{
ifstream source(argv[1]); //打开文件
char line[128];
while(!()){
(line, sizeof(line));
cout <<line <<endl;
}
( );
return 0;
}
异常处理
异常处理即异常错误处理
异常处理的任务就是使程序的运行过程能从异常错误中恢复过来继续执行
或者通知用户遇到了何种异常,不得不停止执行。
Improved error recovery is one of the most powerful ways you can increase the robustness of your code.
robustness 鍵壯性,穩固性,穩健性,堅固性
异常处理的例子
int main(int argc, char ** argv)
{
ifstream source(argv[1]); //打开文件
char line[128];
if(( )){
cout <<"error opening the file "<<argv[1] <<endl;
exit(1);
}
while(!()){
(line, sizeof(line));
cout <<line <<endl;
}
();
return 0;
}
异常处理代码
C语言处理异常的方法
检查函数的返回值来发现异常错误
使用signal( )和 raise( )函数
使用非局部的跳转Goto函数
检查函数的返回值来发现异常错误
从函数返回出错信息,如果函数的返回值不便于返回出错信息,就设置一个全局的出错标志。(标准C提供errno和perror( )来支持这种方法)
这种方法的缺陷:繁琐
处理异常的代码和正常算法的代码交织在一起,增加了代码的复杂性,降低了可读性。
程序员很容易忽视函数的返回值。printf( )
设置全局的出错标志降低了各个模块的独立性。