"try .. except IOError" 没有捕获到 FileNotFoundError 如何处理?

How to handle FileNotFoundError when "try .. except IOError" does not catch it?

如何捕捉 python 3 上的错误?我在谷歌上搜索了很多,但 none 的答案似乎有效。文件 open.txt 不存在,所以它应该打印 e.errno.

这是我现在尝试的:

这是我定义的函数

try:
    with open(file, 'r') as file:
        file = file.read()
        return file.encode('UTF-8')
except OSError as e:
    print(e.errno)

但是当我收到这个错误时我没有打印任何东西

FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

FileNotFoundErrorOSError 的子 class,捕获它或异常本身:

except OSError as e:

操作系统异常已在 Python 3.3 中重新设计; IOError 已合并到 OSError。请参阅新增功能文档中的 PEP 3151: Reworking the OS and IO exception hierarchy section

有关 OS Exceptions section 的更多详细信息,请向下滚动以查看 class 层次结构。

也就是说,您的代码 应该仍然可以工作 因为 IOError 现在是 OSError:

的别名
>>> IOError
<class 'OSError'>

确保将异常处理程序放置在正确的位置。仔细查看异常的回溯,以确保您没有错过实际引发异常的位置。最后但同样重要的是,您确实重新启动了 Python 脚本,对吗?