有时候为了提高我们的程序的安全性,我们可以设置异常处理,否则的话,如果让电脑对我们的程序做异常处理的话,电脑就会直接让我们的程序直接中断运行,非常粗暴,且不便于我们的程序调错。
下面直接上代码:通过代码进行讲解
#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函数下面只有一条语句,也必须使用{}包含起来,否则会进行错误提示。