一、異常處理
來個總的圖例子:
以下實例中 finally 語句無論異常是否發生都會執行:
二、拋出異常
Python 使用 raise 語句拋出一個指定的異常。
raise語法格式如下:
raise [Exception [, args [, traceback]]]
第一個參數someException是觸發異常的名稱,異常名稱是Python提供的標准異常中的任何一種;
第二個參數args是可選的,args可以是一個元組,也可以是單獨的字符串。大多數情況下,單一的字符串用來指示錯誤發生的原因。如果傳的是元組,通常的組成是一個錯誤字符串、一個錯誤編號、一個處理錯誤的函數地址等;
第三個參數是一個traceback對象,它也是可選的,實際上這個參數很少使用,主要是用於跟蹤錯誤記錄。
使用raise語句可以主動拋出異常,用於處理因一些因用戶錯誤操作和輸入而產生的問題。Python提供的標准異常有可能不滿足程序一些特定的異常處理需求。例如用戶操作和輸入錯誤的一些異常。在這種情況下,可以創建自己的異常。
新創建的異常需要繼承於標准異常的基類或子類,這里可能會涉及到類的概念,關於類的概念,我們會在后面的章節予以介紹。下面是一個新建異常的例子。
上面的代碼新建了一個CustomError異常類,CustomError異常類繼承於Python標准異常的Exception類。在下面的代碼中,我們修改前面用戶登錄判斷的案例代碼,並使用自己新建的CustomError異常來處理問題。
三、Python3 assert(斷言)
Python assert(斷言)用於判斷一個表達式,在表達式條件為 false 的時候觸發異常。
斷言可以在條件不滿足程序運行的情況下直接返回錯誤,而不必等待程序運行后出現崩潰的情況,例如我們的代碼只能在 Linux 系統下運行,可以先判斷當前系統是否符合條件。
python assert 斷言句語格式及用法很簡單。在沒完善一個程序之前,我們不知道程序在哪里會出錯,與其讓它在運行最崩潰,不如在出現錯誤條件時就崩潰,這時候就需要assert斷言的幫助
python assert斷言的作用
python assert斷言是聲明其布爾值必須為真的判定,如果發生異常就說明表達式為假。可以理解assert斷言語句為raise-if-not,用來測試表示式,其返回值為假,就會觸發異常。
語法格式如下:
assert expression
等價於:
if not expression:
raise AssertionError
assert 后面也可以緊跟參數:
assert expression [, arguments]
等價於:
if not expression:
raise AssertionError(arguments)
https://www.runoob.com/python3/python3-errors-execptions.html