问题描述
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]
- 输入尝试块。
- 发现错误
- 输入除块。
- 打印“在异常块中!”
- 进入finally块。
- 打印“最后一块!” 并打印 a 。
- 然后从区块中执行 raise e 的手续。
我无法获得控制流程的任何具体参考。
解决方法
流程正确。在离开try \ except \ finally结构之前,将执行finally块。由于您重新引发了异常,因此该异常将从结构中传递出去,因此最终必须首先运行。
a=0
try:
print("In Try Block !")
a = 10/0
except Exception as e:
print("In Exception Block !")
raise e # send exception up the call stack,but must run finally first
finally:
print("In Finally Block !")
print(a)
pass # not needed
您看到的错误跟踪是由调用您的代码的代码生成的-可能是核心python引擎。