Python异常处理机制

异常处理也是现代编程语言的基本特性,使用异常处理可以将正常分支和异常分支分割开来,而不像 C 语言那样,正常分支和异常分支是混在一起的。在 Python 中,异常就是一个特殊的对象,通过该异常对象可以给异常处理函数传递异常发生时的信息。

Python 2 和 Python 3 中异常处理的语法稍有不同,但内部实现机制是一样的。本节以 Python 3 为例介绍异常处理的方法。

多数情况下,我们自己的代码是不会主动抛出异常对象的,我们只是处理其他系统调用抛出的异常对象,所以异常处理往往是开发人员比较关心的内容。

最常见的异常是使用某个未定义的对象,如下:

>>> non_exists         # 访问一个不存在的对象non_exists
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'non_exists' is not defined

如果不对异常进行处理,程序会直接退出。因此我们希望能够捕捉到该异常,得到异常发生的原因,然后继续做后面的事情。对异常的处理就是如果某个异常发生,哪些代码会被执行,以及执行后会从哪里继续执行后面的代码。

和 C++ 类似,一旦出现了异常,代码会从正常分支直接跳到该异常对象对应的处理分支上进行异常处理。在处理完之后,就会执行所有异常处理分支后面的代码,而不会跳回到正常分支继续执行。

那么,到底该如何实现对异常的处理呢?接下来,我将分成几篇文章给大家做详细讲解。