更新时间:2022-09-07 来源:黑马程序员 浏览量:
在Python2.5之前,finally子句曾经不能与try-except或try-except-else子句一起使用,只能使用try-finally,但是这并不符合大部分程序员的习惯。从Python2.5开始,finally子句可以与except子句和else子句自由组合,与try语句联合使用。python中try/except/else/finally语句的完整格式如下:
try: # 语句块 except A: # 异常A处理代码 except: # 其他异常处理代码 else: # 没有异常处理代码 finally: # 最后必须处理代码
正常执行的程序在try语句块中执行,在执行的过程中如果发生了异常,则需要中断当前在try语句块中的执行,然后跳转到对应的异常处理块中开始执行。
Python会从第一个except处开始查找。如果找到了对应的异常类型,则进入其提供的except块中进行处理;如果没有找到,则直接进入不带异常类型的except块进行处理;不带异常类型的except块是可选项,如果没有提供,这个异常就会被提交给Python进行默认处理,处理方式则是终止应用程序并打印提示信息。
如果在try语句块执行过程中没有发生任何异常,则程序在执行完try语句块后进入else执行块中(如果存在的话)执行。
无论是否发生了异常,只要提供了finally语句,程序执行的最后一步总是执行finally对应代码块。
注意:
(1)在完整的异常处理结构中,try/except/else/finally出现的顺序必须是“try”→“except”→“else”→“finally”,即所有的except必须位于else和finally之前,else必须位于finally之前,而exceptA必须位于except之前,否则会出现语法错误。
(2)else和finally语句都是可选的,且finally语句必须是在整个结构的末尾。
(3)else语句不能与没有except语句的异常处理结构配合使用,不然会引发语法错误。也就是说,else不能与try-finally配合使用。