2013-12-14 34 views
2

如果except子句中有return指令,那麼使用else子句有什麼意義?try-except-else語句的用例

​​

我問這個問題,因爲Django文檔做它在some point,在vote()功能。考慮到except子句中的return指令無論如何都會停止函數的執行,爲什麼他們使用else子句隔離只在沒有引發異常時才執行的代碼?他們本可以完全省略else條款。

回答

2

如果在try:套件中存在異常,則會執行else:套件。換句話說,只有在出現實際例外的情況下,纔會使用except:套件並使用return語句。

在我看來,return聲明是什麼在這裏是多餘的;一個pass就足夠了。如果還有其他代碼,應使用else:套件作爲try,如果沒有引發異常,則應執行只有,但可能引發本應不被捕獲的異常。

你是正確的except子句中使用return的爲else:代碼有些多餘的那款讓。整個套件可以去凹陷和else:刪除:

def foo(): 
    try: 
     # Some code 
    except: 
     # Some code 
     return 

    # Some code 
+0

我認爲這一點是,他們可能只是省略'else'完全。它的風格。 – katrielalex

+0

@katrielalex:只有當「傳遞」不僅僅是說明性的。否則,無論上下文如何,'else:pass'都是**總是**冗餘的。 –

+0

當然'通過'是多餘的。我的意思是刪除'else'和縮進'pass'在語義上也是相同的。 – katrielalex