首页 > 解决方案 > 在特殊情况下,Python 的 try 和 except 块似乎都被评估

问题描述

我有一个简单的 Python 代码,带有一个 try 块,如果文件存在则打开一个文件并打印一条消息(M!),如果它不存在则退出。except 块打印不同的消息(M2)。由于某些未知原因,它同时打印了 M1 和 M2。这是通过交互式客户端执行的代码,但即使在非交互模式下执行,也会看到相同的结果:-

Python 3.7.4 (default, Feb  7 2020, 04:54:24)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import os
>>> os.path.isfile("test.txt")
False
>>> try:
...     if os.path.isfile("test.txt"):
...             open("test.txt")
...     else:
...             print("file not found")
...             sys.exit()
... except:
...     print("something else went wrong")
...
file not found
something else went wrong

请让我知道是否有人可以破译发生了什么?

标签: python

解决方案


try块一直执行到抛出异常为止。发生这种情况时,该except块将执行。"file not found"所以在这种情况下,打印后一段时间会抛出异常。您可以通过显式捕获异常来进一步调查:

try:
    print("some message")
    sys.exit()
except Exception as e:
    print(e)

推荐阅读