设为首页 加入收藏

TOP

c++异常处理catch(...)
2014-11-18 13:19:06 】 浏览:1730
Tags:异常 处理 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;


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇新手入门:C/C++中的结构体(struc.. 下一篇C++箴言:通过composition模拟“h..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目