程序可能遇到各种错误,比如:
- 所需的磁盘文件被移动或删除,导致无法打开
- 内存不足,致使通过new无法获取所需要的动态空间
- 用户程序提供了不恰当的数据
这时,程序的正常运行无法继续,此时就会发生异常(exception)。
try-throw-catch异常处理机制关键字try标识一个可能出现异常的程序块
关键字throw在try块中“抛出”异常——转入处理异常
关键字catch标识处理异常的程序块,“捕获”异常
#includeusing namespace std; int main(){ try {//try程序块是“受监控的程序块” int i1,i2; char op; cin>>i1>>i2>>op; if(op=='/'){ if(i2==0){ throw "Divided by 0!";//抛出(char*类型)异常 } ... } else{ if(op=='%'){ if(i2==0){ throw i1;//抛出(int)异常 } ... } else{ ... } } } catch(int i){//捕获int型异常的catch块 ... } catch(char* str){ ... } ...//所有处理结束后,输出信息 }
C++系统对于异常处理的支持
- C++系统提供的异常类及用户定义的异常类
- 捕获系统函数(包括运算符)抛出的异常
多级多重异常捕获
- 多重异常的抛出与捕获——try块中可能抛出不同类型的异常,其后有多个catch块分别进行处理
- 多级异常处理——本层catch不能处理的异常,或需要由上层调用程序处理的异常,可以抛出到上层调用程序。因此在函数的调用——返回机制中,应包含异常抛出的信息。



