C++ 异常处理(try catch throw)、命名空间

一、c++工具

  模板(函数模板、类模板)、异常处理、命名空间等功能是c++编译器的功能,语言本身不自带,这些功能已经成为ANSI C++标准了,建议所有的编译器都带这些功能,早期的c++是没有这些功能的。

二、异常处理

  try:检查

  catch:捕捉

  throw:抛出

  用法如下:

  try

  {

      //可能出错的语句

      //可以含有throw

  }

  catch(类型)

  {

      //如果try出错了就走catch,不出错就跳过catch

  }

注意:

  1.catch后要指定类型,比如catch(int)、catch(double)等,也可以catch(int x)、catch(double y),这样就同时拷贝了throw出来的值;

  2.throw是throw变量,如throw a,a可以是int型、double型的变量,也可以是自己定义的类对象,throw和catch的类型要对应上,执行throw语句后立刻跳出该函数;

  3.try和catch是整体,catch不能单独使用,try可以单独使用,如果都有,二者必须紧挨,不能在中间插入别的语句,try只能有一个,catch可以有多个,以便匹配不同的异常,如:

  try

  {}

  catch(int)

  {}

  catch(double)

  {}

  catch(char)

  {}

  4.catch(...)可以捕捉任何异常,一般这种catch、语句放在最后;

三、命名空间

1.目的:命名空间是为了解决全局变量的同名冲突问题,C语言没有,c++才有;

2.命名空间可以包含变量、结构体、函数、类等,也可以嵌套,即命名空间里的命名空间;

3.可以自己定义命名空间,还是当作全局变量使用,namespace ns1 {... },用的时候ns1::xxxxx;若前面有using namespace xxx,则不用加ns1::;

4.命名空间可以没有名字,即namespace {  ...},这样就不能在别的文件中引用了,只能用于本文件,类似于static的功能,static是c语言留下来的;

5.标准c++库,即iostream里的东西都是在命名空间std里定义的;

6.c语言的头文件带.h,c++不带,但是前面要加c。

posted on 2017-08-22 15:41  chakyu  阅读(269)  评论(1编辑  收藏  举报

导航