所謂異常,就是指程序運(yùn)行中出現(xiàn)的不正常的狀況誊薄,而不正常的情況履恩,在程序中有兩種出現(xiàn)方式
1、寫錯代碼呢蔫,在寫程序時容易出現(xiàn)誤操作把代碼寫錯切心,這種也算異常,出現(xiàn)后片吊,程序會終止報(bào)錯
2绽昏、程序運(yùn)行過程中,在某些特定條件下俏脊,不合適的數(shù)據(jù)引起程序出現(xiàn)錯誤導(dǎo)致程序崩潰
當(dāng)程序出現(xiàn)異常的時候全谤,我們就需要處理異常,當(dāng)程序在運(yùn)行過程中爷贫,由于用戶的誤操作或者不合適的數(shù)據(jù)引發(fā)的程序錯誤认然,讓代碼自己處理并保證程序的正常執(zhí)行补憾。而不至于因?yàn)殄e誤導(dǎo)致程序崩潰!另外卷员,處理異秤遥可以提高代碼的健壯性!
那么問題來了毕骡,該怎么處理異常呢削饵?
? ? 處理異常有兩種方式
1,捕獲處理異常
2未巫,斷言處理異沉耍【測試異常信息】(這里不多做介紹)
捕獲處理異常語法:
try:#嘗試,通常情況叙凡,將可能出現(xiàn)異常的代碼尤仍,包含在try中
<可能會出現(xiàn)異常的代碼>
except[異常信息]:#一旦出現(xiàn)異常,代碼就會直接從出現(xiàn)異常的地方跳轉(zhuǎn)到except中執(zhí)行
<出現(xiàn)異常之后要執(zhí)行的代碼>
else:#如果try中的代碼執(zhí)行沒有異常狭姨,執(zhí)行完畢后,就會執(zhí)行else中的代碼
<正常執(zhí)行try之后苏遥,else中的代碼執(zhí)行>
finally:?#不論是否出現(xiàn)異常饼拍,都要在try執(zhí)行完成之后執(zhí)行的代碼
<最終的掃尾工作>
要處理異常,首先要明確哪些代碼可能會出現(xiàn)異常田炭,其次定位異呈Τ可能出現(xiàn)的代碼的位置,然后將可能出現(xiàn)異常的代碼進(jìn)行異常處理
1.基本異常處理
try-except直接處理異辰塘颍【可以處理任何異尺端保—不能定位具體是什么異常】
try-except?[異常信息]【可以處理指定的異乘簿兀】
2.常見的異常
所有異常的超類:BaseException
標(biāo)準(zhǔn)異常的超類:Exception(BaseException)
程序執(zhí)行過程中經(jīng)巢杓看到的異常:
……
3.處理多個異常
try-except?(E1,?E2,?E3,?…,En)ase一個except處理指定的多個異常
try-exceptE1-except?E2-except?E3…每個except處理指定的異常
通常情況下,我們要查看異常信息景用,就需要打印異常信息—打印e變量的值
問題:
1)系統(tǒng)提供的異常信息涵叮,晦澀難懂!
2)系統(tǒng)提供的異常信息伞插,畢竟有限割粮!
4.自定義異常
異常—一種對象
自定義異常–一種自定義類型
自定義類型[異常]–參考標(biāo)準(zhǔn)異常(繼承Exception)—自定義異常(繼承Exception)
5.主動拋出異常
在開發(fā)的過程中媚污,主動出現(xiàn)一種錯誤舀瓢,將錯誤拋出給程序告訴程序出錯了。
通過raise關(guān)鍵字耗美,拋出一個異常
6.自定義異常京髓,就是為了專門拋出錯誤的航缀,拋出錯誤,就是嚴(yán)重警告這里出現(xiàn)了什么問題
首先-代碼執(zhí)行過程中朵锣,出現(xiàn)了異趁危【系統(tǒng)標(biāo)準(zhǔn)異常】【信息不是很明白】
捕獲系統(tǒng)異常诚些,創(chuàng)建一個自定義異常
拋出自定義異撤煽【自定義異常】【信息明確的錯誤】
自定義異常的目的:轉(zhuǎn)換異常信息诬烹,將不明確的異常信息轉(zhuǎn)換成更加精確的異常信息
轉(zhuǎn)換異常信息:異常的傳遞~傳遞更加明確的異常砸烦,給后面的代碼進(jìn)行處理!