请考虑以下代码:
try:
raise Exception("a")
except:
try:
raise Exception("b")
finally:
raise
Run Code Online (Sandbox Code Playgroud)
这会提高Exception: a.我预计它会提高Exception: b(我需要解释原因吗?).为什么最终raise提出原始异常而不是(我认为)是最后一个异常引发的?
pyf*_*unc 14
在python2.6上
我猜,你期望finally块与"try"块绑在一起,你可以在其中引发异常"B".finally块附加到第一个"try"块.
如果在内部try块中添加了except块,那么finally块将引发异常B.
try:
raise Exception("a")
except:
try:
raise Exception("b")
except:
pass
finally:
raise
Run Code Online (Sandbox Code Playgroud)
输出:
Traceback (most recent call last):
File "test.py", line 5, in <module>
raise Exception("b")
Exception: b
Run Code Online (Sandbox Code Playgroud)
另一种变化解释了这里发生的事情
try:
raise Exception("a")
except:
try:
raise Exception("b")
except:
raise
Run Code Online (Sandbox Code Playgroud)
输出:
Traceback (most recent call last):
File "test.py", line 7, in <module>
raise Exception("b")
Exception: b
Run Code Online (Sandbox Code Playgroud)
如果你看到这里,用except替换finally块会引发异常B.
| 归档时间: |
|
| 查看次数: |
13998 次 |
| 最近记录: |