finally块总在try-except-else之后执行,无论是否发生异常或存在return、raise等语句,常用于文件关闭、连接释放等资源清理工作,确保代码健壮性。

在Python中,finally 语句通常与 try-except 配合使用,用于定义无论是否发生异常都必须执行的代码块。它常用于资源清理工作,比如关闭文件、释放网络连接等,确保程序的健壮性。
finally 的基本语法结构
try-except-else-finally 的完整结构如下:
try:
# 可能出现异常的代码
pass
except SomeException:
# 处理特定异常
pass
else:
# 没有异常时执行
pass
finally:
# 无论是否有异常,都会执行
pass
finally 块中的代码一定会运行,即使前面有 return、break 或 raise 语句。
常见使用场景
以下是一些典型的使用示例:
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
立即学习“Python免费学习笔记(深入)”;
-
文件操作后确保关闭:
try: f = open("data.txt", "r") content = f.read() print(content) except FileNotFoundError: print("文件未找到") finally: if 'f' in locals(): f.close() print("文件已关闭") -
配合 return 使用:即使 try 中有 return,finally 仍会先执行。
def example(): try: return "从 try 返回" finally: print("finally 总是执行")result = example() print(result) # 输出:finally 总是执行 \n 从 try 返回
-
异常未被捕获时,finally 依然执行:
try: raise ValueError("出错了") finally: print("清理工作完成") # 先输出“清理工作完成”,然后抛出 ValueError
注意事项
使用 finally 时需注意以下几点:
- finally 不是用来处理异常的,异常处理应由 except 完成。
- 如果 try 或 except 中有 return 语句,finally 会在函数真正返回前执行。
- 即使程序因致命错误或系统退出(如 os._exit())终止,finally 也可能不会执行。
- 在 with 语句可用的情况下(如文件、锁、网络连接),优先使用上下文管理器(with),更简洁安全。
基本上就这些。finally 的核心价值在于“保障清理逻辑一定执行”,合理使用可提升代码的可靠性。










