【发布时间】:2020-10-11 13:48:24
【问题描述】:
a=0
try:
print("In Try Block !")
a = 10/0
except Exception as e:
print("In Exception Block !")
raise e
finally:
print("In Finally Block !")
print(a)
pass
当我运行上面的代码时,我得到如下输出。我不明白这个脚本的流程。
In Try Block !
Traceback (most recent call last):
In Exception Block !
In Finally Block !
0
File "C:\Users\reccer\Documents\Practicals\test.py", line 7, in <module>
raise e
File "C:\Users\reccer\Documents\Practicals\test.py", line 4, in <module>
a = 10/0
ZeroDivisionError: division by zero
[Finished in 0.3s with exit code 1]
- 进入 try 块。
- 发现错误
- 除块外进入。
- 打印“在异常块中!”
- 进入 finally 块。
- 打印 "In finally Block !" 并打印 a。
- 然后从 except 块执行 raise e 的手续。
我无法获得任何关于控制流的具体参考。
【问题讨论】:
-
一个数不能被零除
-
您期望会发生什么?
-
这里具体有什么不明白的?
-
@mkrieger1 我期待
except块将执行一次,然后它将进入finally块。但正如我们所见,它执行print语句然后转到final块,然后返回except块并执行raise e。 -
@jarmod 上述脚本的执行流程。
标签: python exception control-flow flowchart