【发布时间】:2015-03-30 13:42:14
【问题描述】:
我总是对函数是否会引发 IOError 或 OSError(或两者都引发?)感到困惑。这些异常类型背后的原则是什么,它们之间有什么区别,什么时候提出的?
我最初认为 OSError 是针对诸如权限拒绝之类的事情,但是在没有权限的情况下打开文件会引发 IOError。
【问题讨论】:
-
在 3.3 版中更改:
EnvironmentError、IOError、WindowsError、VMSError、socket.error、select.error和mmap.error已合并到OSError. 例如只需抛出OSError并忘记IOError。 -
@MartijnPieters 谢谢,我已经添加了 Python 2 标记。只是抛出 OSError 对我来说听起来不错,但我总是无法知道像
shutil.copyfile()或os.access()这样的函数何时会引发 IOError 或 OSError(总是需要查找) -
另请参阅python.org/dev/peps/pep-3151 了解这方面的背景,这将有助于了解这两个例外情况。
-
如果您对此感到困惑 - 好吧,这就是切换到 Python 3 的原因之一。
-
@AnttiHaapala 我确实将 Python 3 用于独立项目,但在嵌入式 Python 环境中却是另一回事。 :)
标签: python exception python-2.x