finally块总在try-except-else之后执行,无论是否发生异常或存在return、raise等语句,常用于文件关闭、连接释放等资源清理工作,确保代码健壮性。
在Python中,finally 语句通常与 try-except 配合使用,用于定义无论是否发生异常都必须执行的代码块。它常用于资源清理工作,比如关闭文件、释放网络连接等,确保程序的健壮性。
try-except-else-finally 的完整结构如下:
try:
# 可能出现异常的代码
pass
except SomeException:
# 处理特定异常
pass
else:
# 没有异常时执行
pass
finally:
# 无论是否有异常,都会执行
pass
finally 块中的代码一定会运行,即使前面有 return、break 或 raise 语句。
以下是一些典型的使用示例:
try:
f = open("data.txt", "r")
content = f.read()
print(content)
except FileNotFoundError:
print("文件未找到")
finally:
if 'f' in locals():
f.close()
print("文件已关闭")
def example():
try:
return "从 try 返回"
finally:
print("finally 总是执行")
result = example()
print(result) # 输出:finally 总是执行 \n 从 try 返回
try:
raise ValueError("出错了")
finally:
print("清理工作完成")
# 先输出“清理工作完成”,然后抛出 ValueError
使用 finally 时需注意以下几点:
基本上就这些。finally 的核心价值在于“保障清理逻辑一定执行”,合理使用可提升代码的可靠性。