把例外情况传递给下一个除政治家之外的人

2024-04-19 08:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用try…except块在Python中捕捉异常。程序尝试使用操作系统makedirs. 如果它引发WindowsError:directory already exists,我想捕捉异常而不做任何操作。如果抛出任何其他异常,我捕捉它并设置一个自定义错误变量,然后继续执行脚本。 理论上可行的是:

try:
    os.makedirs(path)
except WindowsError: print "Folder already exists, moving on."
except Exception as e:
    print e
    error = 1

现在我想稍微加强一下,确保windowsrerror的except块只处理那些错误消息包含“directory already exists”的异常,而不处理其他异常。如果有其他窗口错误,我想在下一个except语句中处理它。但不幸的是,以下代码不起作用,也无法捕获异常:

^{pr2}$

如何实现第一个except语句专门捕获“directory already exists”异常,并在第二个except语句中处理所有其他异常?在


Tags: 程序脚本os错误exists语句理论directory
1条回答
网友
1楼 · 发布于 2024-04-19 08:09:21

使用一个异常块和特殊情况下的处理;您只需使用isinstance()来检测特定的异常类型:

try:
    os.makedirs(path)
except Exception as e:
    if isinstance(e, WindowsError) and "directory already exists" in e:
        print "Folder already exists, moving on."
    else:
        print e
        error = 1

请注意,这里我不依赖于异常的容器性质;我将显式测试args属性:

^{pr2}$

相关问题 更多 >