python基礎 異常處理及斷言

2022-08-26 07:03:11 字數 2839 閱讀 3823

異常有很多種型別,常見的由語法錯誤(syntaxerror)、型別錯誤(typeerror)、名字錯誤(nameerror)等等,但我們要知道的是異常本身就是乙個類的例項,所有的異常都繼承於這個baseexception,在這個父類上又下分了下面四大類:

systemexit   python退出異常

keyboardinterrupt   鍵盤打斷(ctrl+c)

generatorexit    生成器退出

exception   普通異常

我們常見的python異常基本上都屬於普通異常。

在python當中,若乙個程式在執行的時候出錯,python直譯器會自動的在出錯的地方生成乙個異常物件,而後python直譯器會自動的在出錯地方的附近尋找有沒有對這個異常物件處理的**,所謂異常處理**就是try……except語句,如果沒有,python直譯器會自動的將這個異常物件拋給其呼叫函式,就這樣層層丟擲,如果在main當中也沒有對這個異常物件處理的**,python直譯器最後會做乙個簡單粗暴的處理,將整個程式給終止掉,並將錯誤的資訊在顯示屏上輸出。

通常都是使用try......except......來處理異常,將可能出錯的**放在try裡,用except來捕獲可能的錯誤型別,從而自定義提示報錯語句。

try:

print ('start')

a = 1/0

print ('mid')

except exception as a:

print (a)

print ('end')

start

division by zero

end

上面簡單的例子可以看出,放在try的語句,一旦發現某一句有異常,後面的語句就不會再執行,然後會跳到except中來捕獲這是乙個什麼異常型別。通常在我們不知道會出現什麼異常型別時,我們就使用普通異常except這個大範圍,最後跳出except,繼續執行後面的**。

要注意的是,except後面可以只加『:』,但這樣就不會捕獲出是什麼異常。也可以加上具體的異常型別來捕獲,更可以加上多種異常。

try:

print ('start')

a = 1/0

print ('mid')

except nameerror as a:

print ("這個異常型別是:a")

except exception as a:

print ("這個異常型別是:",a)

print ('end')

start

這個異常型別是: division by zero

end

加多個異常也可以用乙個except,後面用括號包含多個異常。

except (nameerror,typeerror,exception) as a:
在捕獲異常時,它會從上到下依次對比異常型別,找到之後就不會在往下找了。我們知道try裡的語句出現錯誤時,會到except下捕獲,但要是沒有錯誤呢?事實上,在except後還能加上乙個else,它會在try沒有錯誤時來執行裡面的**。而在else後面,我們還能再加上finally,它是在無論try裡面的語句有沒有報錯都會去執行。

try:

print ('start')

a = 2

print ('mid')

except nameerror as a:

print ("這個異常型別是:a")

except exception as a:

print ("這個異常型別是:",a)

else:

print ("try內語句沒有問題")

finally:

print ("無論try內語句怎麼樣,我都會出現")

print ('end')

start

midtry內語句沒有問題

無論try內語句怎麼樣,我都會出現

end

我們可以自己定義乙個異常型別,但這個異常型別必須繼承於exception。即使在沒有報錯的情況下,我們也可以自己丟擲乙個異常,格式為:raise 異常型別 。

class xiaxie(exception):#自定義乙個異常型別

pass

try:

print ('start')

a = 2

print ('mid')

raise xiaxie

except nameerror as a:

print ("這個異常型別是nameerror")

except xiaxie as a:

print ("這個是自定義的異常型別")

except exception as a:

print ("這個異常型別屬於:",a)

else:

print ("try內語句沒有問題")

print ('end')

start

mid這個是自定義的異常型別

end

斷言是用來檢查非法情況而不是錯誤情況的,用來幫開發者快速定位問題的位置。異常處理用於對程式發生異常情況的處理,增強程式的健壯性和容錯性。格式為:assert condition [,expression ]。一般情況下如assert (),這時會raise乙個assertionerror出來,因為這時的condition為false。

應用場景:開發者所寫的**量大,但在編譯時報出錯誤,又不能具體知道是哪出錯了,這時可用斷言來一步步檢測**。

14 python異常處理及斷言

前言 本文主要介紹python中異常的處理及斷言,包括異常型別 異常捕獲 主動跑出異常和斷言。什麼是異常?異常即是乙個事件,該事件會在程式執行過程中發生,會影響程式的正常執行,一般情況下,在python無法正常處理程式時就會發生乙個異常。異常是python物件,表示乙個錯誤。當python指令碼發生...

python基礎(十) 異常和斷言

異常主要分為四大類,所有異常都是類的形式,均繼承了baseexception這個類。其中systemexit為python的退出異常,keyboardinterrupt為鍵盤的中斷異常,generatorexit為生成器的退出異常。最後一種也是我們通常會遇到的異常exception普通異常。普通異常...

Python 異常及處理

什麼是異常?異常即是乙個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。一般情況下,在python無法正常處理程式時就會發生乙個異常。異常是python物件,表示乙個錯誤。當python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。異常處理 捕捉異常可以使用try except語...