c++异常抛出和接收机制
2017-01-12 19:04
288 查看
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编译器中这样定义同样可以抛出其它类型错误)
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来处理错误。
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来处理错误。
相关文章推荐
- C++异常抛出机制
- C++的和Java的异常机制
- [c/c++]构造函数、析构函数中可不可以抛出异常
- [转]C++异常机制的实现方式和开销分析
- C++ 构造函数抛出异常会引起内存泄漏吗?
- C++ 类构造函数初始化列表的异常机制 function-try block
- C++中可获得抛出位置和捕获位置的异常类
- C++异常处理机制__2.SEH异常抛出与处理
- 续:为何说 C++ 构造函数初始化列表异常机制是必要的
- MFC异常抛出机制的一处设计缺陷
- C++中的异常处理(二)——抛出异常
- C++异常机制的实现方式和开销分析
- C++中因为抛出异常造成的内存泄漏
- c++异常机制
- C++中的异常机制
- More Effective C++ 阅读笔记(八)--“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
- C++能否抛出一个不是继承自std::exception的异常
- 二十一天学通C++之使用throw抛出异常
- C++ 析构函数中抛出的异常
- C++异常机制的实现方式和开销分析(转)