1.異常捕獲
"""
當(dāng)程序發(fā)生異常的時(shí)候,默認(rèn)情況會(huì)崩潰,不能接著往后執(zhí)行,
捕獲異常就是讓程序發(fā)生異常的時(shí)候不崩潰,能夠接著往后執(zhí)行
明明知道代碼會(huì)出現(xiàn)異常,但是又不能通過(guò)修改代碼取避免,這個(gè)時(shí)候就可以通過(guò)異常捕獲去處理異常。
"""
2.捕獲異常的語(yǔ)法
"""
1)語(yǔ)法1: - 捕獲所有的異常
try:
代碼段1
except:
代碼段2
說(shuō)明:try,except - 關(guān)鍵字
代碼段1 - 需要捕獲異常的一條或者多條語(yǔ)句的代碼
代碼段2 - 出現(xiàn)異常后會(huì)執(zhí)行的一條或者多條語(yǔ)句
執(zhí)行過(guò)程:先執(zhí)行代碼段1,如果執(zhí)行代碼段1的時(shí)候出現(xiàn)異常,程序不崩潰,直接執(zhí)行代碼段2
如果代碼段1沒(méi)出現(xiàn)異常,不會(huì)執(zhí)行代碼段2,直接執(zhí)行后面的代碼
2)語(yǔ)法2
try:
代碼段1
except 異常類型:
代碼塊2
執(zhí)行過(guò)程:先執(zhí)行代碼段1,如果執(zhí)行代碼段1的時(shí)候出現(xiàn)異常,判斷異常類型和except后面的異常類型是否一致
如果一致的程序不崩潰,直接執(zhí)行代碼段2,如果不一致,程序直接崩潰
3)語(yǔ)法3
try:
代碼段1
except:
代碼段2(異常類型1,異常類型2,……)
4)語(yǔ)法4
try:
代碼段1
except 異常類型1:
代碼段2
except 異常類型2:
代碼段3
……
finally:
代碼段f
# 語(yǔ)法1的例子
try:
nums = [1, 2, 3, 4]
print(nums[5])
except:
print('出現(xiàn)異常')
# 語(yǔ)法2的例子
nums = {'name': '小明', 'age': 18, 'gender': '男'}
try:
print(nums[4])
print('====')
except KeyError:
print('出現(xiàn)錯(cuò)誤的異常
3.finally:
"""
捕獲異常的最后都可以添加一個(gè)finally,后面的代碼塊,任何情況都會(huì)執(zhí)行。
1)try后面的代碼段么有出現(xiàn)異常,finally會(huì)執(zhí)行
2)try后面的代碼段出現(xiàn)異常被捕獲到,finally會(huì)執(zhí)行
3)try后面的代碼段出現(xiàn)異常沒(méi)有被捕獲到,finally會(huì)執(zhí)行,程序崩潰
"""
4.拋出異常 raise
"""
讓代碼在某種情況下主動(dòng)崩潰:
raise 異常類型
"""