學(xué)習(xí)任務(wù):異常處理
Python有兩種錯(cuò)誤容易辨認(rèn):語法錯(cuò)誤和異常。
一、異常
1.Python的語法錯(cuò)誤或稱之為解析錯(cuò),是初學(xué)者經(jīng)常碰到的。
2.Python運(yùn)行期檢測(cè)到的錯(cuò)誤被稱為異常,大多數(shù)的異常都不會(huì)被程序處理,以錯(cuò)誤信息的形式展現(xiàn)。
錯(cuò)誤信息的前面部分顯示了異常發(fā)生的上下文,并以調(diào)用棧的形式顯示具體信息。
二、異常處理
try-except語句
try語句按照如下方式工作:
1.首先,執(zhí)行try子句(關(guān)鍵字try和關(guān)鍵字except之間的語句)
2.如果沒有異常發(fā)生,忽略except子句,try子句執(zhí)行后結(jié)束
3.如果在執(zhí)行try子句的過程中發(fā)生了異常,那么try子句余下的部分將被忽略。如果異常的類型和except之后的名稱相符,那么對(duì)應(yīng)的except子句將被執(zhí)行。最后執(zhí)行try語句之后的代碼。
4.如果一個(gè)異常沒有與任何except匹配,那么這個(gè)異常將會(huì)傳遞給上層的try中。
一個(gè)try應(yīng)u局可能包含多個(gè)except子句,分別來處理不同的特定的異常。最多只有一個(gè)分支會(huì)被執(zhí)行。處理程序?qū)⒅会槍?duì)對(duì)應(yīng)的try子句中的異常進(jìn)行處理,而不是其他的 try 的處理程序中的異常。
一個(gè)except子句可以同時(shí)處理多個(gè)異常,這些異常將被放在一個(gè)括號(hào)里成為一個(gè)元組。
try-except語句還有一個(gè)可選的else子句,且必須放在所有的except子句之后,這個(gè)子句將在try子句沒有發(fā)生任何異常的時(shí)候執(zhí)行。
使用else子句比把所有的語句都放在try子句里面要好,可以避免一些意想不到的、而except沒有捕獲的異常。
異常處理并不僅僅處理那些直接發(fā)生在try子句中的異常,而且還能處理子句中調(diào)用的函數(shù)(甚至間接調(diào)用的函數(shù))里拋出的異常。
三、拋出異常
Python使用raise語句拋出一個(gè)指定的異常。raise唯一的一個(gè)參數(shù)指定里要被拋出的異常,它必須是一個(gè)異常的實(shí)例或異常的類。