第十二章 異常

Python提供了兩個非常重要的功能來處理python程序在運行中出現的異常和錯誤:異常、斷言

異常處理

異常即是一個事件(在Python中是一個對象),該事件會在Python無法正常處理程序時就會發生,影響了程序的正常執行。每個錯誤都有名稱,當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。

以下是完整的try語句結構,try語句可以嵌套,try中定義的變量可以在函數其他地方使用。

try: # 需要捕獲異常的代碼塊

block

except exception: # 有多種形式

block

else: # 沒有異常執行的語句塊

block

finally: # 無論是否發生異常都將執行的語句塊

block

try中包含的代碼塊,如果執行出錯,則後續代碼不會繼續執行,而是直接跳轉至錯誤處理代碼。如果錯誤代碼沒有使用try捕獲,或者捕獲的錯誤在 except列表沒有相應的處理,它就會一直往上拋,最後被Python解釋器捕獲,打印一個錯誤信息,然後程序退出。

except列表,其中[, Argument] 可以替換為 [as Argument],支持[,語法]與[as語法]。

1、except:

捕獲所有的異常

2、except ExceptionType[, Argument]: 或 except (ExceptType1, ExceptType2, …), Argument/as Argument

捕捉指定的異常,Argument表示異常實例,攜帶異常信息,Argument.message

3、except(Exception1[, Exception2[,...ExceptionN]]])[, Argument]:

一次捕獲列表中的多種異常

觸發異常

當程序出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。

raise [ExceptionType [, args [, traceback]]]

或者

raise ExceptionType(args) #使用異常類的構造函數創建一個異常對象

1、raise

將攔截到的異常錯誤原樣拋出扔給上層處理

2、參數解釋

ExceptionType:異常的類型(例如,NameError)

args:參數是一個異常參數值。該參數是可選的,如果不提供,異常的參數是"None"。

traceback:最後一個參數是可選的,traceback,未提供則是None

自定義異常

通過創建一個新的異常類,程序可以命名它們自己的異常。異常應該是典型的繼承自Exception類,通過直接或間接的方式。

在Python已知的類不滿足的時候,可以定義一個自定義異常類:

class NewException(Exception):

pass

斷言

Python中使用 assert 來使用斷言,起到調試的作用。啟動Python解釋器攜帶 -O 參數可以關閉斷言。

assert expression # 如果 expression 為False, 則觸發一個 AssertionError 異常


分享到:


相關文章: