编程论坛
注册
登录
编程论坛
→
C++教室
关于 异常处理
杰仔1997
发布于 2011-06-16 22:31, 339 次点击
书本介绍TRY时,没有什么例题参考。看得不是很明白,哪位懂的请发几个例子给我。。要简单些的
3 回复
#2
Toomj
2011-06-17 15:15
try里面的是一个程序块,你把可能发生异常的程序块放到try中执行,
如果真发生异常的话,try就把这个异常抛出,
这个抛出过程由throw进行,抛出异常后,
由紧跟在try块后的 catch 接收并解决这个异常
下面是一个解二次方程的例子:
#include<iostream>
#include<math.h>
using namespace std;
double Quadratic(double A,double B,double C,bool choose)
{
if(A)
{
if((B*B-4*A*C)<0)
throw "Error";
else
if(choose)
return ((-1)*B+sqrt(B*B-4*A*C))/(2*A);
else
return ((-1)*B-sqrt(B*B-4*A*C))/(2*A);
}
else
throw C/((-1)*B);
}
int main()
{
try
{
double A,B,C;
cout<<"Enter three number:";
cin>>A>>B>>C;
cout<<"The answer is:"<<Quadratic(A,B,C,1)<<"And"<<Quadratic(A,B,C,0)<<'\n';
}
catch(char *ptr)
{
cout<<ptr<<'\n';
}
catch(double answer)
{
cout<<"The answer is:"<<answer<<'\n';
}
return 0;
}
#3
linw1225
2011-06-17 22:15
1、
C++语言中使用了throw和try-catch语句支持异常处理。
2、
异常处理机制步骤:
❶ 检查异常(使用try语句块)
❷ 抛出异常(使用throw语句块)
❸ 捕捉异常(使用catch语句块)
3、
throw语句一般由throw运算符和一个数据组成的,形式为:
throw 表达式;
try-catch的结构为:
try
{ 被检查的语句 }
catch (异常信息类型[变量名])
{ 进行异常处理的语句 }
4、
说明:
⑴ try块和catch块作为一个正题出现
⑵ 一个try-catch结构中只能有一个try块,但却可以有多个catch块,以便与不同的异常信息匹配。
⑶ catch 后面的括号中,一般只写异常信息的类型名。但catch(……)表示可以捕捉任何类型的异常信息。
⑷ 在某些情况下,在throw语句中可以不包括表达式,如:
catch(……)
{
//其他语句
throw; //将编译捕获的异常信息再次原样抛出,由上一层的catch块处理
}
⑸ 如果throw排除的异常信息找不到与之匹配的catch块,那么系统会调用一个系统函数terminate,是程序终止运行。
5、
C++语言中异常处理的完整过程是程序顺序执行try语句中的语句。如果在执行try块内的各条语句中都没有发生异常,则跳过catch块,转到执行catch块后面的语句。如果在执行try块内的某一条语句中发生异常,则由被调函数的throw抛出异常信息。由throw抛出的异常信息给catch块,系统寻找与之匹配的catch子句,进行异常处理后,程序继续执行catch子句后面的语句,而跳过try中的剩余语句。
示例代码:
#include<iostream>
using namespace std;
int Divide(int x,int y)
{
if(y==0)
throw y; //如果分母为0,抛出异常
return x/y;
}
int main()
{
int a=10,b=5,c=0;
try //检查是否出现异常
{
cout<<"a/b="<<Divide(a,b)<<endl;
cout<<"b/a="<<Divide(b,a)<<endl;
cout<<"a/c="<<Divide(a,c)<<endl;
cout<<"c/b="<<Divide(c,b)<<endl;
}
catch (int) //捕获异常并作出处理,即输出一条提示信息
{
cout<<"except of divide zero"<<endl;
}
cout<<"calculate finished "<<endl; //catch块的后续语句
return 0;
}
#4
pangding
2011-06-17 22:20
这些例子举的还不错~~
楼主用心体会体会呗。
1