如何在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)
但是当我收到此错误时,我没有打印任何内容
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
答案 0 :(得分:27)
FileNotFoundError
是OSError
的子类,捕获该异常本身:
except OSError as e:
操作系统异常已在Python 3.3中重新编写; IOError
已合并到OSError
。请参阅“新功能文档”中的PEP 3151: Reworking the OS and IO exception hierarchy section。
有关详细信息OS Exceptions section以获取更多信息,请向下滚动查看类层次结构。
也就是说,您的代码仍应正常工作,因为IOError
现在是OSError
的别名:
>>> IOError
<class 'OSError'>
确保将异常处理程序放在正确的位置。仔细查看异常的追溯,确保您没有错过它实际被引发的位置。最后但同样重要的是,你确实重启了你的Python脚本,对吧?