理解Python异常处理中的控制流
当我运行上面的代码时,我得到如下输出。我不了解这个脚本的流程理解Python异常处理中的控制流,python,exception,control-flow,flowchart,Python,Exception,Control Flow,Flowchart,当我运行上面的代码时,我得到如下输出。我不了解这个脚本的流程 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 在Try块中
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
在Try块中!
回溯(最近一次呼叫最后一次):
在异常块中!
在最后一个街区!
0
文件“C:\Users\reccer\Documents\Practicals\test.py”,第7行,在
提高e
文件“C:\Users\reccer\Documents\Practicals\test.py”,第4行,在
a=10/0
ZeroDivision错误:被零除
[在0.3秒内完成,退出代码为1]
我无法获得控制流程的任何具体参考。流程是正确的。在离开try\except\finally结构之前执行finally块。由于您重新引发了异常,异常将从结构中传递出去,因此finally必须首先运行
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]
您看到的错误跟踪是由调用您的代码的代码生成的,可能是核心python引擎。一个数字不能被零除。您希望发生什么情况?这里有什么您不明白的地方?@mkrieger1我希望除块之外的
会执行一次,然后它将进入最后
块。但正如我们所看到的,它执行print
语句,然后转到final
块,然后返回except
块,执行raisee
。@jarmod执行上述脚本的流程。
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