c++语言中定义了一套关于异常的抛出throw 和接收catch机制:
1、其中抛出的异常类型可以是一个类对象,某一类型的数据等,
如,抛出某一类型的数据:int x;throw x 等
抛出某一类的对象:throw Exception();
2、抛出异常的位置,
可以在try中写,如
try{
throw Exception(1);
}catch(Exception e){
;
}
可以写在函数名的后方,如
void func() throw(int,Exception) //表明抛出的类型是int 和Exception的错误(但c++的vs2005编译器中这样定义同样可以抛出其它类型错误)
void func() throw(...) //表明可以抛出任意类型的错误
3、对抛出异常的接收机制
try{
}catch(Exception e){ //只能接收Exception类型的错误
}catch(...){ //能够接收任意类型的输出错误
}
4、下举个实例
class Exception{
int type;
public:
Exception(int i){type=i;}
void printStackTrace(){
switch(type){
case 1:cout<<"current error!"<<endl;break;
default: cout<<"error!"<<endl;break;
}
}
};
void testThrow() throw(int,Exception){
throw Exception(2);
};
int _tmain(int argc, _TCHAR* argv[])
{
try{
testThrow();
}catch(Exception e){
e.printStackTrace();
}catch(...){
cout<<"Unknown Error"<<endl;
}
return 0;
}
其中Exception是自己定义的一个错误类型,testThrow是写的抛出错误异常函数,能够抛出int和Exception
类型的错误,在main函数中使用try,catch来处理错误。