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

来源:互联网 发布:sql注入漏洞危害 编辑:程序博客网 时间:2024/06/05 13:29

一、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。