例如如果我試圖打開一個文件,我不能簡單地檢查是否os.path.exists(myfile)
,而不是使用try/except
。我想爲什麼我不應該依賴於os.path.exists(myfile)
的答案是,文件可能無法打開的原因可能有很多。什麼時候應該在Python中使用Try-Except語句?
這就是爲什麼應該使用使用
try/except
進行錯誤處理的邏輯嗎?是否有關於何時在Python中使用異常的一般指導原則。
例如如果我試圖打開一個文件,我不能簡單地檢查是否os.path.exists(myfile)
,而不是使用try/except
。我想爲什麼我不應該依賴於os.path.exists(myfile)
的答案是,文件可能無法打開的原因可能有很多。什麼時候應該在Python中使用Try-Except語句?
這就是爲什麼應該使用使用
try/except
進行錯誤處理的邏輯嗎?是否有關於何時在Python中使用異常的一般指導原則。
通常,您可以使用try /除了當您處理可能會影響的參數之外的事物時。
在你的腳本,你可以檢查變量類型,列出了長度等,你可以肯定的是,因爲你是唯一一個處理這些對象的結果就足夠了。儘管在處理文件系統中的文件或連接到遠程主機等時,您既不能影響也不能檢查所有參數,也不能確定檢查結果是否有效。
正如你所說,
有太多的因素可能會出錯來單獨檢查它們,如果你這樣做,他們可能會改變,直到你真正執行你的命令。
通過嘗試/錯誤,您通常可以捕獲每個異常並單獨處理最重要的錯誤。即使開始測試成功,但確保錯誤仍然得到處理,但在開始運行命令後失敗。
競爭條件。
在檢查文件是否存在,是否這樣做,文件可能已被刪除,編輯操作,重命名等之間的時間...
最重要的是,一個異常會給你一個操作系統錯誤代碼這可以讓你得到更多相關的原因,爲什麼一個操作失敗。
最後,它被認爲是Pythonic請求原諒,而不是要求許可。
謝謝。當試圖寫入Excel文件(該文件已打開)時,我剛剛遇到「文件可能存在但您沒有訪問權限」。即使我想,我不認爲有一種簡單的方法可以在寫入Excel之前檢查excel是否打開,因此,例外提供了一條出路而不會崩潰的方法。無論如何,我認爲我現在能夠更好地理解和欣賞try/except語句。 – akrishnamo