python基礎 異常

2021-09-29 05:39:02 字數 2292 閱讀 9510

處理異常的目的是保證程式在出現錯誤的時候,可以繼續執行下去,而不會立即終止

語法:try:

**塊(可能會出錯的語句)

except 異常型別 as異常名:

**塊(出現錯誤的處理方式)

except 異常型別 as 異常名:

**塊(出現錯誤的處理方式)

…else:

**塊(沒有錯誤時執行的語句)

finally:

**塊(是否有異常都回執行)

print

('程式開始...'

)try

:print(20

/0)except

print

('程式出錯啦'

)else

;print

('程式正常'

)finally

:print

('hello'

)

#函式中異常不進行處理

deffn()

:print

('hello'

)print(10

/0)#函式中對異常進行處理

deffn1()

:try

:print(10

/0)except

:print

('fn1函式中有錯誤,請檢查...'

)print

('hello'

)#呼叫函式時對異常處理

try:

fn()except

:print

('出錯了'

)#執行時,程式不會報錯

print

('hello'

)fn(

)#執行時,程式會報錯

fn1(

)#執行時,程式不會報

通過上面的**可以看出

1、如果函式中沒有對異常進行處理,則異常會繼續想函式呼叫處傳播

2、當在函式**現異常,若在函式中對異常進行處理,則異常不會傳播

3、函式呼叫處對異常進行處理,則不在傳播,如果沒有處理,則繼續向呼叫處傳播,直到傳播到全域性作用域,如果依然沒有處理,則程式停止,並且顯示異常資訊

當程式執行過程**現異常以後,所有異常資訊會被專門儲存到乙個異常物件中,而異常傳播時,實際就是異常物件跑給了呼叫處

print

('程式開始,異常出現前'

)try

:print

(a)print(20

/0)except

:print

('程式出錯了!!!'

)print

('異常出現後'

)

print

('程式開始,異常出現前'

)try

:print

(a)print(20

/0)except nameerror:

print

('出現nameerror!!!'

)print

('異常出現後'

)

print

('程式開始,異常出現前'

)try

:print

(a)print(20

/0)except exception as e:

print

('程式出錯了!!!'

)print

(e,tpye(e)

)print

('異常出現後'

)

通過上面三個**塊可以看出:

1、except後面不跟任何內容可以捕獲所有異常

2、except後面跟乙個異常型別,則只會捕獲該型別的異常

3、如果except後跟的是exception 它會捕獲到所有的異常

4、exception 是所以異常類的父類

class

myerror

(exception)

:#定義異常類

print

('引數中有負數'

)def

fn(a,b)

:if a<

0or b<0:

raise myerror

r=a+b

return r

print

(fn(-1

,2))

通過上面**塊可以看出,可以通過raise丟擲異常資訊,

丟擲異常的目的,告訴呼叫者這裡呼叫時可能出現問題,希望呼叫者處理下

raise後面需要跟乙個異常類或者異常例項

python異常基礎

try後面至少要有一項,亦可以選擇 except else finally中的任意組合 assert語句一般用於開發時對程式條件的驗證,只有當內建 debug 為true時,assert語句才有效。當python指令碼以 o選項編譯成為位元組碼檔案時,assert 語句將被移除。except 帶引數...

Python基礎 異常

google c style中禁止使用異常。python中也有異常,就簡單分享一下。1 0就會產生異常。按自己的方式出錯 raise語句 raise exception traceback most recent all last 自定義異常類 class somecustomexception e...

Python基礎 異常

python中遇到錯誤後,會引發異常。python中使用異常物件來表示異常情況。如果異常物件未被處理或者捕捉,程式就會用所謂的回溯 traceback 來終止執行。下面是乙個例子 def func1 raise exception if name main func1 執行之後報錯 venv e c...