[英]Double return in python class method
當我調用以下方法時,將執行兩次返回,但我不知道為什么。
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)
這是怎么回事:
好吧,我想BuildResult()失敗,傳遞了異常,您進入了第二次返回。 您可以輕松地對其進行測試,只需在其中添加一些調試打印即可-切勿使異常保持沉默:)
執行return BuildResult(True, installData)
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.