今天,这段有趣的 Python 代码发布在 Twitter 上。
def f():
try:
raise KeyError
finally:
return 42
g = f()
执行它时,f()
返回42
并且没有异常冒泡堆栈,正如我所期望的那样。当替换return 42
with eg aspass
语句时,异常会按预期传播到函数外部。
但是,我想知道为什么在使用return
. 毕竟,还有一个未捕获的异常。
这raise
是否意味着 python 函数可以自动清除异常?return
return