2019独角兽企业重金招聘Python工程师标准>>>
错误和异常
14.2 异常类
图14-1(373)
- SystemException——该类用于通常由.NET运行库抛出的异常,或者由几乎所有的应用程序抛出的异常。SystemException异常的子类包括表示致命错误和非致命错误的异常。
- ApplicationException——最初的设计是作为自定义应用程序异常类的基本类,CLR抛出的一些异常也派生自这个类。从ApplicationException派生自定义异常没有任何好处。如果需要自定义异常类,从Exception基类派生自定义异常类。
- StackOverflowException——栈中的内存区域已满,抛出这个异常。
- EndOfStreamException——通常是读到文件末尾而抛出,流表示数据源之间的数据流。
- OverflowException——如果要在checked环境下把包含-40的int类型数据强制转换为uint数据,就会抛出这个异常。
14.3 捕获异常
```
try
{}
catch
{}
finally
{}
```
- 可以省略finally
- 可以由多个catch,过多会降低性能。
- 可以自定义过滤器,其中包含catch块仅在过滤器匹配时,捕获特定块中的异常。
- 可以省略catch块——此时,该语法不是标识异常,而是一种确保程序流在离开try块后执行finally块中的代码的方式。如果在try块中有几个出口点,这很有用。