import random
def raise_valueError(fw):
print(fw)
raise_e = random.choice((True, False))
if raise_e: # 假设这个异常不一定触发
raise ValueError
def try_finally():
file = ‘abc.txt‘
fw = open(file, ‘r‘) # 文件等资源,有打开的话,必须关闭
try:
print(‘try runs -------------‘)
raise_valueError(fw)
# fw.close() # 这里fw.close()可能是执行不到的,这里打开文件可以有with open单不是每种资源打开都有with这种写法
return ‘try‘
except ValueError:
# fw.close() # 这里fw.close()也可能是执行不到的
print(‘except valueError runs -------------‘)
return ‘except valueError‘
finally:
fw.close() # 这里fw.close()是一定执行得到的
print(‘finally runs -------------‘)
return ‘finally‘
# fw.close# 这里fw.close()一定执行不到的
if __name__ == ‘__main__‘:
ret = try_finally()
print(‘ret‘, ret) # 如有finally有return, ret一定是finally的返回值,否则是地方的返回值
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
什么时候Python中try异常捕获finally一定要用到