简单理解C++中的异常处理机制

C++中的异常处理机制
  C++中的异常处理,差不多也是try、catch、throw等关键字的使用!异常事件在C++中表示为异常对象,发生异常事件的时候使用关键字throw抛出异常表达式,代码中为当前的程序设置了异常对象,然后执行程序的当前异常处理代码块,在包含异常抛出的代码快应该书写在try的语句的内部,然后后续catch语句捕捉异常后进行对应的异常处理。简单的例子图下:判断当前输入的成绩是否在0-100之间,否则抛出异常

int main()
{
	int score = 0 ;
	while(cin>>score){
		try{
			if(score > 100 || score < 0) {
				throw score;
			}
		}
		catch(int score) {
			cerr << "分数异常,请重新输入!";
			continue;
		}
	}
}

try语句块

try {
	program-statements; //正常的代码块,其中的声明的语句满足正常的块的限制!
} catch(exception-declaration) {
	handler-statements;//在catch中也无法访问try中的内容的!
} catch(exception-declaration) {
	handler-statements;
}

一般的try的语句块如上所示,其开始的时候必须是一个try的关键字,然后后面跟着一个块,也就是一些代码序列。在其后面可以是很多的catch的语句块,catch的子句包含有三个部分:关键字catch、括号内一个对象的声明,称为异常声明,还有后面的一个块。
而一般的throw的语句都是写在try的语句内部的,或者是直接写进去,或者是使用函数调用的方式写入其中,但是总之都是写在try的语句之中的。

try {
	program-statements; //正常的代码块,其中的声明的语句满足正常的块的限制!
	throw();
} catch(exception-declaration) {
	handler-statements;//在catch中也无法访问try中的内容的!
} catch(exception-declaration) {
	handler-statements;
}

函数在寻找异常处理代码的过程中退出的!在包含了异常出现点的最内层的try块,依次匹配catch语句中的异常对象(只进行类型匹配,catch参数有时在catch语句中并不会使用到)。若匹配成功,则执行catch块内的异常处理语句,然后接着执行try…catch…块之后的代码。如果在当前的try…catch…块内找不到匹配该异常对象的catch语句,则由更外层的try…catch…块来处理该异常;如果当前函数内所有的try…catch…块都不能匹配该异常,则递归回退到调用栈的上一层去处理该异常。如果一直退到主函数main()都不能处理该异常,则调用系统函数terminate()终止程序。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值