簡體   English   中英

python類方法中的雙返回

[英]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)

這是怎么回事:

  1. 用有效字符串調用該方法,例如“ abc”
  2. 調用self.buildData.Build(name)並運行BuildResult(True,installData)構造函數
  3. 最后的返回語句也被執行

好吧,我想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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM