溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

捕獲Python中異常的方法

發(fā)布時間:2020-08-04 09:29:59 來源:億速云 閱讀:99 作者:清晨 欄目:編程語言

小編給大家分享一下捕獲Python中異常的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家學習,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學習方法吧!

Python 提供了try except語句捕獲并處理異常,該異常處理語句的基本語法結(jié)構(gòu)如下:

try:
    可能產(chǎn)生異常的代碼塊
except [(Error1, Error2, ...) [as e]]:
    處理異常的代碼塊1
except [(Error3, Error4, ...) [as e]]:
    處理異常的代碼塊2

該格式中,[] 括起來的部分可以使用,也可以省略;(Error1,Error2,...) 、(Error3,Error4,...) 表示各自的 except 塊可以處理異常的具體類型;[as e] 表示將異常類型賦值給變量 e(方便在 except 塊中調(diào)用異常類型)。

注意,except 后面也可以不指定具體的異常名稱,這樣的話,表示要捕獲所有類型的異常。

另外,從 try except 的基本語法格式可以看出,try 塊僅有一個,但 except 代碼塊可以有多個,這是為了針對不同的異常類型提供不同的異常處理方式。當程序發(fā)生不同的意外情況時,會對應不同的異常類型,Python 解釋器就會根據(jù)該異常類型來決定使用哪個 except 塊來處理該異常。

通過在 try 塊后提供多個 except 塊可以無須在異常處理塊中使用 if 判斷異常類型,但依然可以針對不同的異常類型提供相
應的處
理邏輯,從而提供更細致、更有條理的異常處理邏輯。

try except 語句的執(zhí)行流程如下:首先執(zhí)行 try 中的代碼塊,如果執(zhí)行過程中出現(xiàn)異常,系統(tǒng)會自動生成一個異常對象,該異常對象會提交給 Python 解釋器,此過程被稱為引發(fā)異常。當 Python 解釋器收到異常對象時,會尋找能處理該異常對象的 except 塊,如果找到合適的 except 塊,則把該異常對象交給該 except 塊處理,這個過程被稱為捕獲異常。如果 Python 解釋器找不到捕獲異常的 except 塊,則程序運行終止,Python 解釋器也將退出。

事實上,不管程序代碼塊是否處于 try 塊中,甚至包括 except 塊中的代碼,只要執(zhí)行該代碼塊時出現(xiàn)了異常,系統(tǒng)總會自動生成一個 Error 對象。如果程序沒有為這段代碼定義任何的 except 塊,則 Python 解釋器無法找到處理該異常的 except 塊,程序就會停止運行;反之,如果程序發(fā)生異常,并且該異常經(jīng) try 捕獲并由 except 處理完成,則程序會繼續(xù)執(zhí)行。

舉個例子:

try:
    a = int(input("輸入被除數(shù):"))
    b = int(input("輸入除數(shù):"))
    c = a / b
    print("您輸入的兩個數(shù)相除的結(jié)果是:", c )
except (ValueError, ArithmeticError):
    print("程序發(fā)生了數(shù)字格式異常、算術(shù)異常之一")
except :
    print("未知異常")
print("程序繼續(xù)運行")

程序運行結(jié)果為:

輸入被除數(shù):a
程序發(fā)生了數(shù)字格式異常、算術(shù)異常之一
程序繼續(xù)運行

上面程序中,第 6 行代碼使用了(ValueError, ArithmeticError)來指定所捕獲的異常類型,這就表明該 except 塊可以同時捕獲這 2 種類型的異常;第 8 行代碼只有 except 關(guān)鍵字,并未指定具體要捕獲的異常類型,這種省略異常類的 except 語句也是合法的,它表示可捕獲所有類型的異常,一般會作為異常捕獲的最后一個 except 塊。除此之外,由于 try 塊中引發(fā)了異常,并被 except 塊成功捕獲,因此程序才可以繼續(xù)執(zhí)行,才有了“程序繼續(xù)運行”的輸出結(jié)果。

以上是捕獲Python中異常的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI