1.異常捕獲
當(dāng)程序發(fā)生異常的時候,默認(rèn)情況下會出現(xiàn)崩潰,不能接著往后執(zhí)行;
捕獲異常就是讓程序發(fā)生異常的時候不崩潰,能夠接著往后執(zhí)行
一般在明明知道代碼會出現(xiàn)異常,但是又不能通過修改代碼去避免,這個時候就可以通過異常捕獲去處理異常
2.捕獲異常的語法
(1)語法1:捕獲所有的異常
try:
代碼塊1
except:
代碼段2
說明:try except - 關(guān)鍵字,固定寫法
代碼段1 - 需要捕獲異常的一條或多條語句
代碼段2 - 出現(xiàn)異常后會執(zhí)行的一條或多條語句
執(zhí)行過程:先執(zhí)行代碼段1,如果執(zhí)行代碼段1的時候出現(xiàn)異常,程序不崩潰,直接執(zhí)行代碼段2
如果代碼段1沒有出現(xiàn)異常,不會執(zhí)行代碼段2
(2)語法2:
try:
代碼段1
:except 異常類型:
代碼段2
執(zhí)行過程:先執(zhí)行代碼段1,如果執(zhí)行代碼段1出現(xiàn)異常,判斷異常的類型是否和except后面的異常類型一致,
如果是一致的,程序不崩潰,直接執(zhí)行代碼段2;如果不一致,程序直接崩潰。如果代碼段1沒有出現(xiàn)異常,不會執(zhí)行代碼段2
(3)語法3:
try:
代碼段1
except(異常類型1,異常類型2,...):
代碼段2
執(zhí)行過程:先執(zhí)行代碼段1,如果執(zhí)行代碼段1出現(xiàn)異常,判斷異常的類型是否和except后面的異常類型一致,
如果是一致的,程序不崩潰,直接執(zhí)行代碼段2;如果不一致,程序直接崩潰。如果代碼段1沒有出現(xiàn)異常,不會執(zhí)行代碼段2
(4)語法4:
try:
代碼段1
except 異常類型1:
代碼段11
except 異常類型2:
代碼段22
except 異常類型3:
代碼段33
....
3.finally
捕獲異常語法的最后都可以添加一個finally,finally后面的代碼段任何情況都會執(zhí)行
(1)try后面的代碼段沒有出現(xiàn)異常,finally會執(zhí)行
(2)try后面的代碼段出現(xiàn)異常被捕獲到,finally會執(zhí)行
(3)try后面的代碼段出現(xiàn)異常沒有被捕獲到,finally會執(zhí)行
例如:
try:
代碼段1
:except 異常類型:
代碼段2
finally:
代碼段f
4.拋出異常
讓代碼在某種情況下主動崩潰:
raise 異常類型