C ++程序设计 第15 章 异常 程序中经常要检查处理各种错误情形,如果用传统的流程控制语句来处理,很容易使程序逻辑混乱
异常(exception)就是一种专门用于检测错误并处理的一种机制,使程序保持逻辑清晰,并改进程序的可靠性
C++语言提供了基本的异常处理机制
本章主要介绍异常的概念、语句、异常类型架构及应用
可靠的编程应尽可能地、及时地检测到各种异常情形,尽可能在本地处理
尽管有时自己不能处理,也应该向调用方提供详细的出错信息,使调用方能得到充分信息,从而采取合适方式来处理异常
1 异常的概念 异常是什么概念
异常就是在程序运行中发生的难以预料的、不正常的事件而导致偏离正常流程的现象
例如: 访问数组元素的下标越界,在越界时又写入了数据; 用new 动态申请内存而返回空指针(可能是因内存不足); 算术运算上溢出或下溢出; 整数除法中除数为 0; 调用函数时提供了无效实参,如指针实参为空指针(如用空指针来调用strlen 函数); 通过挂空指针或挂空引用来访问对象; 输入整数或浮点数失败; I/O 错误,等等
上面列出的情形之一如果发生,就可能导致运行错误而终止程序
发生异常将导致正常流程不能进行,就需要对异常进行处理
那么异常处理是什么概念
异常处理(exception handling)就是在运行时刻对异常进行检测、捕获、提示、传递等过程
如果采用传统的if-else 语句来检测处理所有可能发生的异常,很容易导致程序流程混乱,分不清正常流程与异常处理,而且在处理一个异常时往往又引入了新的异常
假设要设计一个函数,从一个文本文件中读取数据得到一个 float 矩阵
该文件应存放一个 m*n 的float 矩阵,头两个整数说明其行数 m 和列数 n
你要把它读入并创建一个矩阵对象,以备下一步计算
如果你认为文本文件不会有