# 异常处理
1.catch捕获异常时，不会进行数据类型的默认转换。
2.限制异常的方法
- 当一个函数声明中不带任何异常描述时，它可以抛出任何异常。例如：
```c++
int f(int,char);                 //函数f可以抛出任何异常
```
- 在函数声明的后面添加一个throw参数表，在其中指定函数可以抛出的异常类型。例如：
```c++
int g(int,char)  throw(int,char);  //只允许抛出int和char异常。
```
- 指定throw限制表为不包括任何类型的空表，不允许函数抛出任何异常。如：
```c++
int h(int,char) throw();//不允许抛出任何异常
```
3.捕获所有异常
在多数情况下，catch都只用于捕获某种特定类型的异常，但它也具有捕获全部异常的能力。其形式如下：
```c++
catch(…) {
    ……                        //异常处理代码
}
```
4.再次抛出异常
如是catch块无法处理捕获的异常，它可以将该异常再次抛出，使异常能够在恰当的地方被处理。再次抛出的异常不会再被同一个catch块所捕获，它将被传递给外部的catch块处理。要在catch块中再次抛出同一异常，只需在该catch块中添加不带任何参数的throw语句即可。
5.异常的嵌套调用
try块可以嵌套，即一个try块中可以包括另一个try块，这种嵌套可能形成一个异常处理的调用链。
