5:finally结构
try...except...finally 结构
try...except...finally 结构中,finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源。
【示例】try...except...finally 结构简单测试
try:
a = input("请输入一个被除数:")
b = input("请输入一个除数:")
c = float(a) / float(b)
except BaseException as e:
print(e)
else:
print(c)
finally:
print("我是 finally 中的语句,无论发生异常与否,都执行!")
print("程序结束!")
运行结果:
"D:\Program Files\Python310\python.exe" D:\work\python\four\mypy07.py
请输入一个被除数:10
请输入一个除数:6
1.6666666666666667
我是 finally 中的语句,无论发生异常与否,都执行!
程序结束!
进程已结束,退出代码0
输出异常运行结果:
"D:\Program Files\Python310\python.exe" D:\work\python\four\mypy07.py
请输入一个被除数:10
请输入一个除数:a
could not convert string to float: 'a'
我是 finally 中的语句,无论发生异常与否,都执行!
程序结束!
【示例】读取文件,finally 中保证关闭文件资源
try:
f = open("d:/a.txt", 'r')
content = f.readline()
print(content)
except BaseException as e:
print(e)
finally:
try:
f.close() # 释放资源。此处也可能会发生异常。若发生异常,则程序终止,不会继续往下执行
except BaseException as e:
print(e)
print("step4")
输出结果:
"D:\Program Files\Python310\python.exe" D:\work\python\four\mypy08.py
1234567890-=
step4
发生异常的执行结果:
Traceback (most recent call last):
[Errno 2] No such file or directory: 'd:/a.txt'
File "C:/PycharmProjects/mypro_exception/my01.py", line 8, in <module>
f.close() #释放资源。此处也可能会发生异常。若发生异常,则程序终止,不会继续往下执行
NameError: name 'f' is not defined
Process finished with exit code 1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?