异常的概念
所谓异常,是指在程序运行过程中,由于系统条件、操作不当等原因而引起的运行错误。常见的异常包括除零错误、指针访问受保护空间、数据越界、分配空间失败、要打开的文件不存在等。为了确保程序的高容错性,在编程过程中,需要在程序中对这些异常进行处理,防止系统崩溃。
接下来通过一个除零异常的案例来了解系统出现异常的情况,如例1所示。
例1
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int m = 10, n = 0; //定义两个整型变量,m将作为被除数,n作为除数
6 cout << "m / n = " << m / n << endl; //除零,引发异常
7 return 0;
8 }
程序运行结果如图1所示。
图1 例1运行结果
例1运行时因为除零异常,导致程序崩溃,因此检测并处理异常是保证系统安全性及健壮性的重要手段,也是程序设计中应重点关注的内容。
一般来说,异常可以分为两类,一类是可预见的异常,一类是不可预见的异常。对于可预见的异常,可以通过在程序结构中添加相应的容错代码进行处理,而不可预见异常则可利用C++中提供的一些内置的语言特性来处理。
C++中异常的产生有其自身的特点。通常程序由多个模块组成,程序中出现异常和处理异常可能分布在不同模块中,C++的异常处理机制将能够处理这种情况。C++异常处理的基本思想是,让一个函数在发现了自己无法处理的错误时抛出一个异常,然后它的直接或者间接调用者能够处理这个问题,实现了问题检测和处理的分离。