Kar*_*rus 7 python windows exception-handling
我试图在Windows 8上使用Python 2.7.6来理解异常.
这是我正在测试的代码,它旨在创建一个新目录My_New_Dir.如果目录已存在,我想删除整个目录及其内容,然后创建一个新目录.
import os
dir = 'My_New_Dir'
try:
    os.mkdir(dir)
except IOError as e:
    print 'exception thrown'
    shutil.rmtree(dir)
    os.mkdir(dir)
问题是,永远不会抛出异常.如果目录不存在,代码工作正常,但如果目录确实存在,那么我得到错误:
WindowsError:[错误183]当该文件已存在时无法创建文件:'My_New_Dir'
但是根据os.mkdir()的Python文档,
如果该目录已存在,则引发OSError.
那么为什么抛出Windows错误而不是Python异常呢?
Mar*_*ers 12
WindowsError是.的子类OSError.从例外文件:
在发生特定于Windows的错误或错误号与
errno值不对应时引发.该winerror和strerror值是从的返回值创建GetLastError()并FormatMessage()从Windows平台的API函数.该errno值将值映射winerror到相应的errno.h值.这是一个子类OSError.
IOError然而,你正试图抓住,这不是这样的父类WindowsError; 因此,它既不足以捕获OSError也不是WindowsError.
更改代码以在此处使用正确的异常:
try:
    os.mkdir(dir)
except OSError as e:
或使用WindowsError; 这会将您的代码绑定到Windows平台.