文章目录
一、异常处理机制
1、异常:
程序执行时遇到的任何错误或意外行为。
2、异常处理:
异常处理就是当程序出现这些错误后,给与恰当的处理,为程序提供退出的安全通道。
3、异常可能性:
1、代码或调用的代码(如共享库)中有错误;
2、操作系统资源不可用;
3、公共语言运行库遇到意外情况(如无法验证代码);
4、用户的错误操作等
4、传统的异常处理方法:
弊端:可读性差,将程序代码与处理异常的代码混在一起。
要求:需要更加灵活、程序可读性强、降低程序员劳动强度的处理方式。
二、C++异常处理机制:
在遇到异常时,系统不是马上终止运行,而是允许用户排除错误,继续运行程序,至少给出出错的提示信息。
在大型复杂的软件系统中,函数之间有明显的分工和复杂的调用关系,发现错误的函数一般不具备处理错误的能力。
这时只能导致一个异常,并抛出异常,如果调用者也不能处理就传递给它的上级调用者,这样一直上传到能处理为止。
如果始终没有处理就上交到C++运行系统,运行系统调用abort函数强行终止整个程序。
三、C++异常处理的实现
C++语言中:
try、throw和catch子句就是用于实现异常处理机制的程序语句:
1、try
try语句块中包含可能出现异常的代码,如果运行时出现了错误,就抛掷异常对象的类型和异常内容。
2、throw
throw抛掷异常事件的类型和异常内容。
3、catch
catch捕获并处理异常事件,定义异常处理程序。
四、标准程序库异常的用法
try{
int* p = new int[10];
}
catch (std::bad_alloc& e) {
std::cerr << e.what() << std::endl;
}
五、异常处理中的构造与析构
1、异常抛出之前构造异常对象
2、catch字句捕获异常时,将异常对象传递给catch形参
3、catch字句执行完成,调用异常对象的析构函数,异常对象自动销毁。