繁体   English   中英

当“try .. except IOError”未捕获时如何处理 FileNotFoundError?

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

如何在 python 3 上捕获错误? 我用谷歌搜索了很多,但似乎没有一个答案有效。 文件 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的子类,捕获它或异常本身:

except OSError as e:

操作系统异常已在 Python 3.3 中重新设计; IOError已合并到OSError中。 请参阅新增功能文档中的PEP 3151:重做 OS 和 IO 异常层次结构部分

有关更多详细信息,请参阅OS Exceptions部分以获取更多信息,请向下滚动查看类层次结构。

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

>>> IOError
<class 'OSError'>

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

将您的 OSError 更改为 (IOError, OSError) 应该可以工作。

@Thomas Wagenaar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM