只要我跑得够快,异常就追不上我~
本帖最后由 永恒的蓝色梦想 于 2020-3-28 13:24 编辑我们都知道,在 try finally 的结构里,不管 try 里面发生什么,finally 一定会执行。
同时我们也知道,finally 无法阻止异常发生。
所以,下面这个例子会发生什么呢?{:10_256:}def func():
try:
raise BaseException
finally:
return '有异常'
让我们来运行一下~{:10_327:}
结果>>> def func():
try:
raise BaseException
finally:
return '有异常'
>>> func()
'有异常'惊奇的发现,BaseException 竟然不见了!
原来我们在 BaseException 被引发之前就从函数里跑出去了,只留下 BaseException 在风中凌乱……{:10_250:}
同理,以下几个例子也不会发生异常{:10_248:}>>> for i in range(3):
try:
print(i**2)
iter(i)
finally:
continue
0
1
4
>>> >>> while 1:
try:
int([])
finally:
print('溜了溜了')
break
溜了溜了
>>>
如果对这个现象感到不解的童鞋,可以去看一下 一个账号 的这篇帖子:传送门{:10_307:}
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
自占二楼 真是个奇葩的把异常甩掉的方法 哈哈哈哈哈真够皮的 刚才咩事都没有发生 qiuyouzhi 发表于 2020-3-25 15:20
刚才咩事都没有发生
是的,本来你不说谁都不知道的{:10_248:} 永恒的蓝色梦想 发表于 2020-3-25 15:26
是的,本来你不说谁都不知道的
{:10_262:} 如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
一个账号 发表于 2020-3-28 12:50
如果有收获,别忘了评分 :
谢啦https://fishc.com.cn/static/image/smiley/ARU/aru-1x-1_044.png 永恒的蓝色梦想 发表于 2020-3-28 13:24
谢啦
什么谢啦? 一个账号 发表于 2020-3-28 13:25
什么谢啦?
谢谢提供代码,已经用上了 学习{:10_270:}
页:
[1]