python类方法中的双返回

2024-05-26 11:08:38 发布

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

当我调用下面的方法时,会执行两个返回,我不知道为什么。在

def Build(self, name = None):
    if self.buildData:
        try:
            installData = self.buildData.Build(name)
            return BuildResult(True, installData)
        except:
            pass
    else:
        Log("Application has no <build> data")
    return BuildResult(False, None)

结果是:

  1. 方法是用一个有效的字符串调用的,比如“abc”
  2. 在self.buildData.BuildinstallData被称为run(True)的构造函数
  3. 最后一个return语句也被执行

Tags: 方法namebuildselfnonetruereturnif
2条回答

好吧,我猜BuildResult()失败了,异常被传递,然后进入第二个返回。只需在except-never make exceptions silent:)中添加一些调试打印即可轻松测试它

当执行return BuildResult(True, installData)时,BuildResult(True, installData)首先计算。我的猜测是,这个函数引发一个异常,该异常被捕获并passed,然后执行return BuildResult(False, None)。在

您应该看到引发了什么异常并正确地处理它。在

我将重写函数如下:

def Build(self, name = None):
    if self.buildData:
        try:
            installData = self.buildData.Build(name)
        except: # TODO: catch only expected exception
            pass
        return BuildResult(True, installData)
    else:
        Log("Application has no <build> data")
    return BuildResult(False, None)

相关问题 更多 >