当我调用以下方法时,会执行两次返回,我无法找出原因。
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)
这是怎么回事:
答案 0 :(得分:7)
好吧,我猜BuildResult()失败,异常被传递,你进入第二次返回。您可以通过添加一些调试打印来轻松测试它,除非 - 永远不要使异常无声:)
答案 1 :(得分:1)
首先执行return BuildResult(True, installData)
执行BuildResult(True, installData
)。我的猜测是,这个函数引发了一个被捕获的异常pass
。之后执行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)