比较常用的形式有:
1)标准异常处理结构
try:
try块#被监控的语句,可能会引发异常
except Exception[, reason]:
except块 #处理异常的代码
如果需要捕获所有异常时,可以使用BaseException,代码格式如下:
try:
……
except BaseException, e:
except块 #处理所有错误
上面的结构可以捕获所有异常,尽管这样做很安全,但是一般并不建议这样做。对于异常处理结构,一般的建议是尽量显式捕捉可能会出现的异常并且有针对性地编写代码进行处理,因为在实际应用开发中,很难使用同一段代码去处理所有类型的异常。当然,为了避免遗漏没有得到处理的异常干扰程序的正常执行,在捕捉了所有可能想到的异常之后,您也可以使用异常处理结构的最后一个except来捕捉BaseException。
2)另外一种常用的异常处理结构是try...except...else...语句。
3)在实际开发中,同一段代码可能会抛出多个异常,需要针对不同的异常类型进行相应的处理。为了支持多个异常的捕捉和处理,Python提供了带有多个except的异常处理结构,这类似于多分支选择结构,一旦某个except捕获了异常,则后面剩余的except子句将不会再执行。语法为:
try:
try块 #被监控的语句
except Exception1:
except块1 #处理异常1的语句
except Exception2:
except块2 #处理异常2的语句
4)将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常,并且共用同一段异常处理代码,当然,除非确定要捕获的多个异常可以使用同一段代码来处理,并不建议这样做。
5)最后一种常用的异常处理结构是try...except...finally...结构。在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放try子句中申请的资源。语法如下:
try:
……
finally:
...... #无论如何都会执行的代码