希望大家喜歡,點(diǎn)贊哦
Python錯(cuò)誤和異常處理概略
一、錯(cuò)誤和異常的概念
1.1 錯(cuò)誤:代碼運(yùn)行前的語法或者邏輯錯(cuò)誤
語法錯(cuò)誤:代碼不符合解釋器或者編譯器語法
邏輯錯(cuò)誤:不完整或者不合法輸入或者計(jì)算出現(xiàn)問題
1.2 異常:程序執(zhí)行過程中出現(xiàn)問題導(dǎo)致程序無法執(zhí)行
異常的分類:
程序遇到邏輯或算法錯(cuò)誤
運(yùn)行過程中計(jì)算機(jī)錯(cuò)誤:內(nèi)存不夠或者io錯(cuò)誤
異常的步驟:
異常產(chǎn)生,檢查到錯(cuò)誤且解釋器認(rèn)為是異常,拋出異常
異常處理,異常處理,截獲異常,系統(tǒng)忽略或者終止程序處理異常
二、常見的錯(cuò)誤
2.1 NameError
2.2 SyntaxError(語法錯(cuò)誤)
2.3 IOError(輸入輸出錯(cuò)誤)
2.4 ZeroDivisionError(除0錯(cuò)誤)
2.5 ValueError
三、異常處理
3.1 try_except及else使用
語法:
try:
try_suite
# 第一種錯(cuò)誤
except Exception1 [e]:
exception_block1
#第二種錯(cuò)誤
except Exception2 [e]:
exception_block2
#第N種錯(cuò)誤
except ExceptionN [e]:
exception_blockN
# else
else:
none_exception
執(zhí)行過程:
- try來捕獲try_suite中的錯(cuò)誤,并且將錯(cuò)誤交給except處理
- except用來處理異常,如果異常和設(shè)置捕獲異常一致,使用exception_block處理異常
3.2 截獲異常:使用try_except即可
3.3 try_finaly使用
語法:
try:
try_suite
finally:
do_finally
執(zhí)行過程:
- 如果try語句沒有捕獲錯(cuò)誤,代碼執(zhí)行do_finally語句
- 如果try語句捕獲錯(cuò)誤,程序首先執(zhí)行do_finally語句,然后將捕獲到的錯(cuò)誤交給Python解釋器處理
規(guī)則:try_finally無論是否檢測到異常,都會(huì)執(zhí)行finally代碼
作用:為異常世界提供清理機(jī)制,用來關(guān)閉文件或者釋放系統(tǒng)資源
3.4 異常處理綜合使用
3.4.1 try-except-finally使用:
try:
try_suite
except:
do_except
finally:
do_finally
執(zhí)行過程:
- 若try語句沒有捕獲異常,執(zhí)行完try代碼段后,執(zhí)行finally
- 若try捕獲異常,首先執(zhí)行except處理錯(cuò)誤,然后執(zhí)行finall
3.4.2 try-except-else-finally使用:
try:
try_suite
except:
do_except
else:
do_else
finally:
do_finally
執(zhí)行過程:
- 若try語句沒有捕獲異常,執(zhí)行完try代碼段后,執(zhí)行else代碼段,最后執(zhí)行finally
- 若try捕獲異常,首先執(zhí)行except處理錯(cuò)誤,然后執(zhí)行finall
3.5 with...as語句與上下文管理
3.5.1 with語句:
with context [as var]:
with_suite
- with語句用來代替try-except_finall語句,使代碼更加簡潔;
- context表達(dá)式返回的是一個(gè)對象;
- var 用來保存context返回對象,單個(gè)返回值或者元祖
- with_suite 使用var變量來對context返回對象進(jìn)行操作
with語句應(yīng)用場景:
1.文件操作;
2.進(jìn)程線程之間互斥對象,例如互斥鎖
3.支持上下文的其他對象
3.5.2 上下文管理
with語句實(shí)質(zhì)上是上下文管理
1.上下文管理協(xié)議
:包含方法enter()和exit(),支持該協(xié)議的對象要實(shí)現(xiàn)這兩個(gè)方法
2.上下文管理器
:定義執(zhí)行with語句是要建立的運(yùn)行時(shí)上下文,負(fù)責(zé)執(zhí)行with】語句塊上下文的進(jìn)入與退出操作
3.進(jìn)入上下文管理器
:調(diào)用管理器enter()方法,如果設(shè)置as var 語句,var變量接受enter()方法返回值
4.退出上下文管理器
:調(diào)用管理器exit()方法
四、raise和assert語句
4.1 raise
raise語句用于主動(dòng)拋出異常
語法:raise [exception[,args]]
exception: 異常類
args:描述異常信息的元組
4.2 assert
斷言語句:assert語句用于檢測表達(dá)式是否為真,如果為假,引發(fā)AssertionError錯(cuò)誤
語法:assert expressionion [,args]
expression:表達(dá)式
args:判斷條件的描述信息
五、標(biāo)準(zhǔn)異常和自定義異常
標(biāo)準(zhǔn)異常:Python內(nèi)建異常
標(biāo)準(zhǔn)異常的分類:
BaseException:所有異常基類
Keyboardinterrupt:用戶中斷(ctrl-c)
Exception:常見錯(cuò)誤的基類(SyntaxError,NameError,IOError,ImprotError ...)
SystemExit:Python解釋器退出
自定義異常:
1.用戶自定義,用于描述Python中沒有涉及的異常
2.自定義異常繼承Exception類
3.自定義異常只能主動(dòng)觸發(fā)
自定義異常示例:
自定義異常:
class FileError(IOError):
pass
產(chǎn)生自定義異常:assert FileError,"file Error"
希望大家喜歡,點(diǎn)贊哦