CPlusPlusThings/practical_exercises/10_day_practice/day9/readme.md

27 lines
1.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 异常处理
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块这种嵌套可能形成一个异常处理的调用链。