Python提供了重要的特性處理程序未知的錯誤。能快速定位錯誤,調試代碼更容易。Python內置了很多異常類。例如 Exception 是所有異常的基類,OverflowError 是處理數字溢出的類。
異常是一個事件。在程序的執行過程中,發生了擾亂程序正常運行的行為。Python就會拋出一個異常,並說明異常的原因。
當程序拋出異常時,必須要得到有效的處理,否則就會終止程序執行並退出。
處理異常
如果你認為一段代碼很有可能拋出異常,那面必須把程序放入一個 try 塊中,之後跟著一個 except,處理發生的異常事件。
- 一個 try 語句後面可能會跟著很多 except塊,分別處理不同的異常。因為 try 可能會觸發不同的異常。如果 except 沒有處理未知的異常,程序會終止執行並退出。
- 可以提供一個基礎的異常類,這樣可以處理任何異常,比如 Exception基類。
- else 語句是可選的,如果 try 沒有發生異常,則 else 代碼塊執行。
- finally 塊的代碼不管有沒有發生異常肯定會執行,例如執行一些資源清理。
- except 的 as 引用異常對象,可以查看異常詳情。
例子
如果試圖對一個不存在的文件,就會發生錯誤 ioerror FileNotFoundError(2, 'No such file or directory'),如果文件存在,則會打印文件的內容。最後執行 else 代碼塊,關閉文件資源。
except 語句後面也可以不跟任何異常,代表可以處理任何類型的異常。當然這並不是一個好的編程實踐,因為不能確切指出代碼哪裡有問題,調試也不方便。
拋出異常
可以用 raise Exception 語句拋出異常
自定義函數 func1 中,檢測輸入參數需要 >= 1,否則拋出異常。以上代碼調用了兩次 func1,但是第二次調用的時候,輸入參數是0,拋出了異常,因為沒有處理異常。程序終止了,所以最後一行無法執行。
應該用 try ... except ... 處理異常。
輸出:
input is 2
exception occurred: input must >= 1
end
閱讀更多 趣喜歡編程 的文章