VS 中throw、try、catch异常处理函数的用法

有时候为了提高我们的程序的安全性,我们可以设置异常处理,否则的话,如果让电脑对我们的程序做异常处理的话,电脑就会直接让我们的程序直接中断运行,非常粗暴,且不便于我们的程序调错。

下面直接上代码:通过代码进行讲解

#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

double quotient(double Divisor,double divisor)
{
	if (divisor == 0) //此处可以当除数为0时,进行报错警告,也可以像下面那样直接抛出“除数为0”这样的错误提示,为了区分,这里抛出整数
		throw 1;      //同样,也可以抛出double类型数据,下面的catch函数就写成catch(double & Error)即可
	return Divisor/divisor;
}

int main()
{
	///第一个示例,throw在函数中
	double a=5.0;
	double b=0;
	double c=0;
	try
	{
		c=quotient(a,b);
	}
	catch(int &Error)  //此处也可以写成catch(int) 当遇到throw 1,也可以捕捉到错误
	{
		cout << Error << endl;
	}
	/第二个示例,throw在主程序中,多个catch函数
	double Array[100]={1.2,1.3,1.4};
	int n=30;
	try
	{
	    if (n>sizeof (Array)/sizeof(Array[0]))
			throw string("数组下标越界");
		if (n == 10)
			throw 100;
		if (n == 20)
			throw 200;
		if (n == 30)
			throw 300.00;
		cout << Array[n] << endl;
	}
	catch(string& Err)
	{
		cout << Err << endl;
	}
	catch(int& Err)
	{
		if (Err == 100)
		cout <<"错误提示代码为:100"<< endl;
		if (Err == 200)
		cout <<"错误提示代码为:200"<< endl;
	}
	catch(...)
	{
		cout <<"程序异常,请进行调试"<< endl;
	}

	system("pause");
	return 0;
}

上面第一个catch(int & Error)也可以写成catch(int),即不捕捉抛出的错误值,但是我们捕捉抛出的错误值有一个好处就是:

如果我们定义1表示除数为0,抛出2表示数组越界....,我们就可以根据抛出的错误值进行错误提示,很方便

当然也可以像第二个catch这样,直接抛出错误提示。

catch(...)就是实在没有办法的情况下的错误提示,例如当n=30时,抛出的是300.00,这是一个double数据类型,但我们只提供了抛出int和string类型的错误类型时的异常,所以只能进入catch(...)的错误处理方式,因此会给出“程序异常,请进行调试”的错误提示。

注意事项:

一个try函数必须包含至少一个catch函数,可以包含多个错误判断。

try函数下面必须紧接着catch函数,中间不能有别的语句。

即使try函数下面只有一条语句,也必须使用{}包含起来,否则会进行错误提示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值