Windows上os.rename引发WindowsError而非OSError
Python的官方文档提到,关于os.rename这个函数
os.rename(src, dst)
... 在Windows系统上,如果目标文件(dst)已经存在,即使它是一个文件,也会引发OSError错误 ...
不过对我来说,它却引发了WindowsError错误。这是不是文档有问题呢?
问题的第二部分(虽然更一般,但受到上面问题的启发):
更新 抱歉,问题的第二部分是错误的。WindowsError确实是被except OSError
捕获的,这样是对的。
1 个回答
6
因为OSError是WindowsError的父类,所以只需要捕捉OSError就可以了。
顺便说一下,核心开发者可以抛出比文档中承诺的更具体的异常。
另外,下面的代码在我这里运行得很好(在WindowsXP上使用Python2.7.2):
try:
raise os.rename('nonexisting_file', 'def')
except OSError:
print 'caught'