2013-10-04 31 views
-1

我看到這樣的代碼:是`try:... except:raise`在Python中執行任何操作嗎?

try: 
    print abC# actually different code was here but it doesn't matter, right? 
except: 
    raise 

究竟有沒有理由把print abc在這個奇怪的try: except: raise建設?除了子句只有一個raise操作,所以如果一個異常被捕獲,它只會被重新賦值,對嗎?所以我想這個結構除了代碼行之外什麼都沒帶,是吧?

回答

5

這段代碼沒什麼意義。它確實會捕獲任何和所有異常,然後重新提升它們。追溯和異常是保留的,所以在其他Python代碼方面,重新加載可能不會存在。

這可能是代碼曾經比這更多,但作者希望通過保持縮進相同來最小化VCS更改。或者可能認爲在發生異常時插入日誌記錄或調試代碼會很方便。

+0

你非常慈善。似乎作者只是不明白他在做什麼。 –

+0

@DanielRoseman:永遠有可能。我想給這樣一個人帶來懷疑的好處,讓他們先解釋自己,但不要打折無能。 :-) –

1

此代碼是沒有用處

except: 
    raise 

Reraises所有的異常,這是完全一樣擺在首位沒有趕上他們。它可以安全地移除。

相關問題