为什么foo
这个异常不被注意到,但bar
的异常被引发?python try-finally
def foo():
try:
raise Exception('foo')
finally:
return
def bar():
try:
raise Exception('bar')
finally:
pass
foo()
bar()
为什么foo
这个异常不被注意到,但bar
的异常被引发?python try-finally
def foo():
try:
raise Exception('foo')
finally:
return
def bar():
try:
raise Exception('bar')
finally:
pass
foo()
bar()
如果最后条款引发了另一个异常或执行了return或break语句,保存异常丢失。
重复的[return eats exception](http://stackoverflow.com/questions/517060/return-eats-exception) – gecco 2011-12-20 12:04:51