异常处理
在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的,比如语法错误、调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的,比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。
异常有很多种类型,Python内置了几十种常见的异常,就在builtins模块内,无需特别导入,直接就可使用。需要注意的是,所有的异常都是异常类,首字母是大写的!
为了保证程序的正常运行,提高程序健壮性和可用性。我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。
Python内置了一套try...except...finally(else)...的异常处理机制,来帮助我们进行异常处理。其基本语法是:
try…except…语句处理异常的工作机制如下:
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。
如果程序发生的异常不在你的捕获列表中,那么依然会抛出别的异常。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中
文件读写异常处理
可能包含多个except子句,分别来处理不同的特定的异常
通用异常:Exception
在Python的异常中,有一个通用异常:Exception,它可以捕获任意异常。
主动抛出异常:raise
很多时候,我们需要主动抛出一个异常。Python内置了一个关键字raise,可以主动触发异常。
自定义异常
Python内置了很多的异常类,并且这些类都是从BaseException类派生的。