当前位置: 首页 > 知识库问答 >
问题:

将Exception传递给next except

韦宏扬
2023-03-14

我正在尝试捕捉异常...除了Python中的block。该程序尝试使用os.makedirs创建目录树。如果它引发Windowserror:directory已经存在,我希望捕捉异常,什么也不做。如果抛出任何其他异常,我将捕获它并设置一个自定义错误变量,然后继续执行脚本。理论上可行的是以下几点:

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

我如何实现我的第一个except语句专门捕获“Directory已经存在”异常,而所有其他的都在第二个except语句中得到处理?

共有1个答案

尤博达
2023-03-14

使用一个异常块和特殊情况您的处理那里;您只需使用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属性:

if isinstance(e, WindowsError) and e.args[0] == "directory already exists":
 类似资料:
  • 问题内容: 我试图将SharedPreferences首选项作为AsyncTask中doInBackground函数的参数传递。我已经给它传递了一个字符串(URL),所以我也需要将首选项也作为字符串传递。我可以简单地使用prefs.toString()将其转换为字符串吗? 这是我设置偏好的地方: 问题答案: 你不能,你不应该。您可以轻松地读取内部首选项,而无需将任何内容传递给方法,只需使用即可:

  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对

  • 问题内容: 因此,我看到了一个示例,其中他们将延迟的angualar传递到ngRepeat中,并且效果很好。由于某些原因,当我设置此示例时,它不起作用。谁能告诉我为什么?如果您分配的数据没有延迟,则可以正常工作,即 非常感谢 小提琴在这里 问题答案: 我认为您不能直接使用Promise对象,而应使用文档中所述的回调。 这意味着您 而是应该像 否则,您将包含promise对象,而不包含要传递给的数据

  • 问题内容: 考虑一个非fx的现有应用程序,将其称为。 公开一个对象,该对象又公开了一些属性。也接受这些属性的侦听器。 我的问题是关于 将 JavaFx gui 添加 到此类应用程序。将明显延长,将需要一个参考对象。 在寻找将非String参数传递给我的解决方案时,我发现了几种不同的方法: 静态方法:例如,已初始化对in 的静态引用。在这里可以看到使用静电的一个示例。 JavaFx 9方法:如此处所

  • 问题内容: 我在MVC框架的View类上有3套。我想在controll类中引用它们。有人可以告诉我这实现了吗?下面是事件控制器。EventView类由addEvent,editEvent,deleteEvent组成,如何在Controller类中为其侦听器。有人可以在Controller类的顶部演示使用示例代码吗? 第二个问题,我只能从类本身更新a ,因此 在View类中具有代码是一种不好的做法,

  • 我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?