常见异常处理结构形式
Python 提供了多种不同形式的异常处理结构,基本思路都是一致的: 先尝试运行代
码,然后处理可能发生的错误 在实际使用时,可以根据需要来选择使用哪一种。
1. try-except…
Python异常处理结构中最基本的结构是try.except.结构。其中try子句中的代码块包含可能会引发异常的语句,而except子句用来捕捉相应的异常。 如果try子句中的代码引发异常并被except子句捕捉,则执行except子句的代码块;如果 try 中的代码块没有出现异常则继续往下执行异常处理结构后面的代码;如果出现异常但没有被except 捕获, 则继续往外层抛出;如果所有层都没有捕获并处理该异常,则程序崩溃并将该异常呈现给最终用户,这是我们最不希望发生的事情。 该结构语法如下:
try:
#可能会引发异常的代码,先执行一下试试
except Exception[ as reason]:
#如果try中的代码抛出异常并被except捕捉,就执行这里的代码
2.try.except.else…
带有else子句的异常处理结构可以看作是一种特殊的选择结构,如果 try中的代码
抛出了异常并且被某个except语句捕捉则执行相应的异常处理代码,这种情况下就不会
执行else中的代码;如果try中的代码没有抛出异常, 则执行else块的代码。 该结构的语
法如下:
try:
#可能会引发异常的代码
except Exception [ as reason]:
#用来处理异常的代码
else:
#如果try子句中的代码没有引发异常,就继续执行这里的代码
3.try.except.finally…
在这种结构中 , 无论 try 中的代码是否发生异常,也不管抛出的异常有没有被 except语句捕获,finally子句中的代码总是会得到执行。 因此,finally中的代码常用来做一些清理工作以释放 try 子句中申请的资源。 该结构语法为
try:
#可能会引发异常的代码
except Exception [ as reason]:
#处理异常的代码
finally:
#无论try子句中的代码是杏引发异常,都会执行这里的代码
4. 可以捕捉多种异常的异常处理结构
在实际开发中,同一段代码可能会抛出多种异常,并且需要针对不同的异常类型进行相应的处理。 为了支持多种异常的捕捉和处理,Python提供了带有多个except的异常处理结构,一旦某个except捕捉到了异常,则其他的 except子句将不会再尝试捕捉异常。该结构类似于多分支选择结构,语法格式为
try:
#可能会引发异常的代码
except Exception1:
#处理异常类型1的代码
except Exception2:
#处理异常类型2的代码
except Exception3:
#处理异常类型3的代码
5.同时包含else子句、finally子句和多个except子句的异常处理结构
Python异常处理结构中可以同时包含多个 except子句、else子句和 finally子句。