异常处理机制

异常和异常处理

程序可能遇到各种错误,比如:

  • 所需的磁盘文件被移动或删除,导致无法打开
  • 内存不足,致使通过new无法获取所需要的动态空间
  • 用户程序提供了不恰当的数据

这时,程序的正常运行无法继续,此时就会发生异常(exception)。

try-throw-catch异常处理机制

关键字try标识一个可能出现异常的程序块
关键字throw在try块中“抛出”异常——转入处理异常
关键字catch标识处理异常的程序块,“捕获”异常

#include<iostream>
using 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不能处理的异常,或需要由上层调用程序处理的异常,可以抛出到上层调用程序。因此在函数的调用——返回机制中,应包含异常抛出的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值