理解Python异常处理中的控制流

2024-09-28 03:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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]
  1. 进入try块
  2. 发现错误
  3. 除块外进入
  4. 在异常块中打印
  5. 最后进入街区
  6. 打印“最终块中的&;打印a
  7. 然后从except块执行提升e的手续

我无法获得任何关于控制流的具体参考


Tags: inexceptionblockusersdocumentsfileraiseprint
1条回答
网友
1楼 · 发布于 2024-09-28 03:25:09

流程是正确的。在离开try\except\finally结构之前执行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引擎

相关问题 更多 >

    热门问题