对python中的try、except、finally 执行顺序详解

  • Post category:Python

当 Python 程序出现异常时,如果我们能够对异常进行处理,就会使程序变得更加健壮。

Python 中用 try、except 和 finally 语句来实现异常处理。

  • try:尝试执行一些可能会出现异常的代码,如果代码块中没有异常,则直接跳过 except 块;
  • except:如果在 try 块中出现了异常,则跳转到 except 块中进行异常处理,并且执行 except 块中的代码;
  • finally:无论是否出现异常,都会执行 finally 块中的代码。

try、except 和 finally 块的执行顺序如下:

  • 首先,执行 try 块中的代码;
  • 如果 try 块中出现了异常,则跳转到 except 块中执行异常处理,并忽略 finally 块;
  • 如果 try 块中没有出现异常,则直接忽略 except 块,跳转到 finally 块执行代码;
  • 如果 try 和 except 块都没有出现异常,则直接跳转到 finally 块执行代码。

下面通过代码示例,进一步说明 try、except 和 finally 块的执行顺序:

try:
    a = 1/0
except ZeroDivisionError:
    print('除数不能为0')
finally:
    print('这是finally块,无论是否有异常都会执行')

输出:

除数不能为0
这是finally块,无论是否有异常都会执行

在这个例子中,我们在 try 块中尝试对数字 1 进行了除以 0 的操作,这样会产生 ZeroDivisionError 异常,然后程序跳转到 except 块处理异常,输出“除数不能为0”,最后跳转到 finally 块中输出“这是finally块,无论是否有异常都会执行”。

再来一个例子:

try:
    a = 1/2
except ZeroDivisionError:
    print('除数不能为0')
finally:
    print('这是finally块,无论是否有异常都会执行')

输出:

这是finally块,无论是否有异常都会执行

在这个例子中,由于 1/2 并不会产生除以 0 的异常,所以 try 块中代码可以顺利执行,接着跳转到 finally 块中输出“这是finally块,无论是否有异常都会执行”。

总之,无论程序有没有发生异常,finally 块中的代码都将被执行,并可以用于释放资源或清理临时文件等操作。