永恒的蓝色梦想 发表于 2020-3-25 14:45:27

只要我跑得够快,异常就追不上我~

本帖最后由 永恒的蓝色梦想 于 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

永恒的蓝色梦想 发表于 2020-3-25 15:02:44

自占二楼

wuqramy 发表于 2020-3-25 15:05:04

真是个奇葩的把异常甩掉的方法

乘号 发表于 2020-3-25 15:16:27

哈哈哈哈哈真够皮的

qiuyouzhi 发表于 2020-3-25 15:20:17

刚才咩事都没有发生

永恒的蓝色梦想 发表于 2020-3-25 15:26:10

qiuyouzhi 发表于 2020-3-25 15:20
刚才咩事都没有发生

是的,本来你不说谁都不知道的{:10_248:}

qiuyouzhi 发表于 2020-3-25 15:29:39

永恒的蓝色梦想 发表于 2020-3-25 15:26
是的,本来你不说谁都不知道的

{:10_262:}

一个账号 发表于 2020-3-28 12:50:16

如果有收获,别忘了评分{: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 13:24:43

一个账号 发表于 2020-3-28 12:50
如果有收获,别忘了评分 :

谢啦https://fishc.com.cn/static/image/smiley/ARU/aru-1x-1_044.png

一个账号 发表于 2020-3-28 13:25:26

永恒的蓝色梦想 发表于 2020-3-28 13:24
谢啦

什么谢啦?

永恒的蓝色梦想 发表于 2020-3-28 13:42:11

一个账号 发表于 2020-3-28 13:25
什么谢啦?

谢谢提供代码,已经用上了

Mike_python小 发表于 2020-3-28 18:18:11

学习{:10_270:}
页: [1]
查看完整版本: 只要我跑得够快,异常就追不上我~