===============異常捕獲=============
1.異常捕獲的作用:
當(dāng)程序發(fā)送異常的時候凄鼻,默認(rèn)情況下程序會崩潰疲恢,不能接著往后執(zhí)行,捕獲異常就是讓程序發(fā)生異常的時候不崩潰辆亏,繼續(xù)往后執(zhí)行
1)什么時候使用:
一般在明明知道代碼會出現(xiàn)異常蛾狗,但又不能通過修改代碼去避免的時候
2.捕獲異常的語法:
語法1:(捕獲所以異常)
try:
代碼塊1
except:
代碼塊2
2)說明:
try,except -- 關(guān)鍵字,固定寫法
代碼塊1 -- 需要捕獲異常的代碼
代碼塊2 -- 捕獲異常后需要執(zhí)行的代碼
3)執(zhí)行過程:
先執(zhí)行代碼塊1座菠,如果執(zhí)行過程出現(xiàn)異常狸眼,程序不會崩潰,而是浴滴!直接拓萌!執(zhí)行代碼塊2,但如果沒有異常升略,就不會執(zhí)行代碼塊2
而是直接執(zhí)行后面的代碼
2.語法2:(捕獲特定的一種異常類型) 這種比較常用
try :
代碼塊1
except 異常類型:
代碼塊2
1)執(zhí)行過程:會在以上基礎(chǔ)上判斷異常類型是否是except后面的異常類型微王,如果是就執(zhí)行代碼塊2,如果不是就會直接報錯
3.語法3:(捕獲多種異常類型)
try:
代碼塊1
except (異常類型1品嚣,異常類型2炕倘,異常類型3...):
代碼塊2
4.語法4:(捕獲多種異常類型,并爭對不同的異常來執(zhí)行不同的代碼)
try:
代碼塊1
except 異常類型1:
代碼塊2
except 異常類型2:
代碼塊3
.....
try:
nums = [1, 2, 3]
print(nums[5])
print('==========')
except:
print('出現(xiàn)異常')
print('=========')
特定的異常捕獲實例:
nums = [1, 2, 3]
person = {'name': '小明', 'age': 18, 'gender': '男'}
try:
sco = person['csore']
num = nums[4]
except KeyError:
print('關(guān)鍵字錯誤')
3.finally :
上面的四種語法都可以在最后加finally:
并且任何情況都會執(zhí)行里面的代碼(意思就是就算沒有捕獲到異常,代碼報錯了還是翰撑!會執(zhí)行U中)
finally的實例:
try:
nums = [1, 2, 3]
num = nums[0]
except KeyError:
print('關(guān)鍵字錯誤')
finally:
print('finally報錯還是會執(zhí)行')
4.拋出異常
讓代碼子啊某種情況下主動崩潰:
raise 異常類型(可以自定義)
raise 實例:
raise KeyError