任何人都可以解释为什么下面的示例不引发Exception
吗?
def foo():
try:
0/0
except Exception:
print('in except')
raise
finally:
print('in finally')
return 'bar'
my_var = foo()
print(my_var)
这只会返回:
in except
in finally
bar
与没有return 'bar'
语句的相同代码一起引发异常:
in except
in finally
Traceback (most recent call last):
File "test.py", line 10, in <module>
my_var = foo()
File "test.py", line 3, in foo
0/0
ZeroDivisionError: division by zero
答案 0 :(得分:1)
有关详细信息,请参见https://stackoverflow.com/a/19805813/1358308,但要简短
finally
块应始终执行,因此Python必须忽略raise
语句,因为这会违反语义