Python3中异常处理:try-finally语句

发布于:2025-02-10 ⋅ 阅读:(23) ⋅ 点赞:(0)

一. 简介

在 Python中,异常处理是一种对程序运行时异常的处理机制,通过捕获并处理程序运行过程中可能出现的错误,从而避免程序崩溃。

Python 提供了 try,except,else和 finally关键字来处理异常。本文来学习一下  try...finally 语句结构。

二. Python3中异常处理:try-finally 语句

try...finally 语句是 Python中用于确保,某些代码无论是否发生异常都会被执行的一种结构。这种结构特别适用于需要执行清理操作的场景,比如,关闭文件,释放锁或网络连接等。

try...finally 语句结构如下:

#!/usr/bin/env python3

try:
    #要执行的代码块
except ExceptionType1 as err:
    #触发 ExceptionType1异常时,要执行的代码块
else:
    #没有异常发生时,要执行的代码块
finally:
    #无论是否发生异常,都会执行的代码块

try...finally 语句结构的执行过程:

1.  执行 try块

代码首先执行 try块内的逻辑。

2. 检查异常

无异常:若 try块执行后无异常,则跳过 except 块,直接执行 finally。

有异常:若 try块执行中发生异常,Python会立刻暂停当前流程(try 块中剩下未运行的代码),转而去执行 finally块。

3. 执行 finally块

finally块的代码必定运行,无论try 块代码是否发生异常,或是否有 return 、break、continue等等控制流语句。

三. 示例

示例 1:释放资源的功能

#!/usr/bin/env python3

fd = open("test.txt", 'r')
try:
    fd.read()
#finally块用于关闭文件
finally:
    fd.close()

示例 2:覆盖返回值或覆盖异常

如果 finally 代码块中有 return或 新的异常,则会覆盖 try 或 except块中结果。因此,在 finally块中应尽量避免引发异常,除非有理由要这么做。

示例如下:

#!/usr/bin/env python3

def sub_func():
    try:
        return "from try code-blocks"
    finally:
        return "from finally code-blocks"

#调用函数 sub_func()
info = sub_func()
print(info)

运行后结果如下:

示例 3:如果在 try块中发生了异常并且该异常未被捕获(即没有 except异常处理块的代码),则运行了 finally块的代码后才抛出异常。如下所示:

#!/usr/bin/env python3

try:
    value1 = 20/0
    #发生异常后,try代码块后续代码不会执行
    value2 = 10*1
    print("try code-blocks executed.")

finally:
    print("finally code-blocks executed.")

运行后结果如下:


下一篇文章写一些示例,继续学习一下 try...finally语句的使用。


网站公告

今日签到

点亮在社区的每一天
去签到