06.09 Python 異常處理

Python 異常處理

Python提供了重要的特性處理程序未知的錯誤。能快速定位錯誤,調試代碼更容易。Python內置了很多異常類。例如 Exception 是所有異常的基類,OverflowError 是處理數字溢出的類。

異常是一個事件。在程序的執行過程中,發生了擾亂程序正常運行的行為。Python就會拋出一個異常,並說明異常的原因。

當程序拋出異常時,必須要得到有效的處理,否則就會終止程序執行並退出。

處理異常


如果你認為一段代碼很有可能拋出異常,那面必須把程序放入一個 try 塊中,之後跟著一個 except,處理發生的異常事件。

Python 異常處理

  • 一個 try 語句後面可能會跟著很多 except塊,分別處理不同的異常。因為 try 可能會觸發不同的異常。如果 except 沒有處理未知的異常,程序會終止執行並退出。
  • 可以提供一個基礎的異常類,這樣可以處理任何異常,比如 Exception基類。
  • else 語句是可選的,如果 try 沒有發生異常,則 else 代碼塊執行。
  • finally 塊的代碼不管有沒有發生異常肯定會執行,例如執行一些資源清理。
  • except 的 as 引用異常對象,可以查看異常詳情。

例子


Python 異常處理

如果試圖對一個不存在的文件,就會發生錯誤 ioerror FileNotFoundError(2, 'No such file or directory'),如果文件存在,則會打印文件的內容。最後執行 else 代碼塊,關閉文件資源。

except 語句後面也可以不跟任何異常,代表可以處理任何類型的異常。當然這並不是一個好的編程實踐,因為不能確切指出代碼哪裡有問題,調試也不方便。

Python 異常處理

拋出異常


可以用 raise Exception 語句拋出異常

Python 異常處理

自定義函數 func1 中,檢測輸入參數需要 >= 1,否則拋出異常。以上代碼調用了兩次 func1,但是第二次調用的時候,輸入參數是0,拋出了異常,因為沒有處理異常。程序終止了,所以最後一行無法執行。

應該用 try ... except ... 處理異常。

Python 異常處理

輸出:

input is 2
exception occurred: input must >= 1
end


分享到:


相關文章: