C++ 异常处理异常处理 catch(…)介绍介绍
如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的catch用法,那就是”
catch(…)”。
感性认识感性认识
1、、catch(…)到底是一个什么样的东东,先来个感性认识吧到底是一个什么样的东东,先来个感性认识吧!
看例子先:
代码如下:
int main()
{
try
{
cout << “在 try block 中, 准备抛出一个异常.” << endl;
//这里抛出一个异常(其中异常对象的数据类型是int,值为1)
throw 1;
}
//catch( int& value )
//注意这里catch语句
catch( …)
{
cout << “在 catch(…) block 中, 抛出的int类型的异常对象被处理” << endl;
}
}
2、哈哈、哈哈!int类型的异常被类型的异常被catch(…)抓获了,再来另一个例子:抓获了,再来另一个例子:
代码如下:
int main()
{
try
{
cout << “在 try block 中, 准备抛出一个异常.” << endl;
//这里抛出一个异常(其中异常对象的数据类型是double,值为0.5)
throw 0.5;
}
//catch( double& value )
//注意这里catch语句
catch( …)
{
cout << “在 catch(…) block 中, double类型的异常对象也被处理” << endl;
}
}
3、同样,、同样,double类型的异常对象也被类型的异常对象也被catch(…)块抓获了。块抓获了。是的,catch(..)能匹配成功所有的数据类型的异常对象,包括
C++语言提 供所有的原生数据类型的异常对象,如int、double,还有char*、int*这样的指针类型,另外还有数组类型的异常对
象。同时也包括所有自定义 的抽象数据类型。例程如下:
代码如下:
int main()
{
try
{
cout << “在 try block 中, 准备抛出一个异常.” << endl;
//这里抛出一个异常(其中异常对象的数据类型是char*)
char* p=0;
throw p;
}
//catch( char* value )
//注意这里catch语句
catch( …)
{
cout << “在 catch(…) block 中, char*类型的异常对象也被处理” << endl;
}
}
int main()
{
try