当"try ..除了IOError"没有捕获它时,如何处理FileNotFoundError?

Tho*_*s W 18 python exception try-catch python-3.x

如何在python 3上捕获错误?我已经google了很多,但没有一个答案似乎有效.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)
Run Code Online (Sandbox Code Playgroud)

但是当我收到此错误时,我不打印任何内容

FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 28

FileNotFoundErrorOSErrorcatch或异常本身的子类:

except OSError as e:
Run Code Online (Sandbox Code Playgroud)

操作系统异常已在Python 3.3中重新编写; IOError已被合并OSError.请参阅" 新增内容"文档中的PEP 3151:重新编写操作系统和IO异常层次结构部分.

有关详细信息,请参阅操作系统异常部分以获取更多信息,向下滚动查看类层次结构.

也就是说,您的代码应该仍然IOError现在的别名一样工作OSError:

>>> IOError
<class 'OSError'>
Run Code Online (Sandbox Code Playgroud)

确保将异常处理程序放在正确的位置.仔细查看异常的回溯,确保您没有错过它实际被引发的位置.最后但并非最不重要的,你确实重启了你的Python脚本,对吗?