1.什么是異常?
? ? ? ?異常:不正常的情況
? ? ? ?不正常的情況狈茉,在程序中,會有兩種體現(xiàn)
? ? ? ?1.寫錯代碼了掸掸!錯誤也是一種異常氯庆;程序都運行不起來!
? ? ? ?2.程序運行過程中扰付,在某些特定條件下堤撵,不合適的數(shù)據(jù)引起程序出現(xiàn)錯誤導致程序崩潰
? ? ? ? ? 例如:要求用戶輸入一個數(shù)字,但是用戶誤操作輸入了字符串羽莺,在進行類型轉換時就會出現(xiàn)錯誤導致程序崩潰实昨!
2.為什么要處理異常?
? ? ? ?當程序在運行過程中盐固,由于用戶的誤操作或者不合適的數(shù)據(jù)引發(fā)的程序錯誤荒给,讓代碼自己處理并保證程序的正常執(zhí)行。而不至于因為錯誤導致程序崩潰刁卜!
提高代碼的健壯性
3.那么怎么處理異常志电?
? ? ? ??捕獲處理異常
? ? ? ? 斷言處理異常【測試異常信息】
? ? ? ? 捕獲處理異常語法:
? ? ? ? try:#嘗試长酗,通常情況溪北,將可能出現(xiàn)異常的代碼,包含在try中
? ? ? ? <可能會出現(xiàn)異常的代碼>
except[異常信息]: #一旦出現(xiàn)異常,代碼就會直接從出現(xià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īng)驗>
在寫代碼的同時,直接處理異常
1.基本異常處理
? ? try-except直接處理異巢腔辏【可以處理任何異持蘸穑—不能定位具體是什么異常】
? ? try-except [異常信息]【可以處理指定的異陈认】
2.常見的異常
? ? 所有異常的超類:BaseException
? ? 標準異常的超類:Exception(BaseException)
? ? 程序執(zhí)行過程中經(jīng)臣使颍看到的異常:
……
3.處理多個異常
? ? try-except (E1, E2, E3, …,En) ase一個except處理指定的多個異常
? ? try-except E1-except E2-except E3…每個except處理指定的異常
? ? 通常情況下,我們要查看異常信息喉钢,就需要打印異常信息—打印e變量的值
? ? 問題:
? ? 1)系統(tǒng)提供的異常信息姆打,晦澀難懂!
? ? 2)系統(tǒng)提供的異常信息肠虽,畢竟有限幔戏!
4.自定義異常
? ? 異常—一種對象
? ? 自定義異常–一種自定義類型
? ? 自定義類型[異常] –參考標準異常(繼承Exception)—自定義異常(繼承Exception)
5.主動拋出異常
? ? 在開發(fā)的過程中税课,主動出現(xiàn)一種錯誤闲延,將錯誤拋出給程序告訴程序出錯了。
? ? 通過raise關鍵字韩玩,拋出一個異常
6.自定義異常慨代,就是為了專門拋出錯誤的,拋出錯誤啸如,就是嚴重警告這里出現(xiàn)了什么問題
? ? 首先-代碼執(zhí)行過程中侍匙,出現(xiàn)了異常【系統(tǒng)標準異扯vǎ】【信息不是很明白】
? ? 捕獲系統(tǒng)異常想暗,創(chuàng)建一個自定義異常
? ? 拋出自定義異常【自定義異沉辈唬】【信息明確的錯誤】
? ? 自定義異常的目的:轉換異常信息说莫,將不明確的異常信息轉換成更加精確的異常信息
轉換異常信息:異常的傳遞~傳遞更加明確的異常,給后面的代碼進行處理寞焙!