您好,登錄后才能下訂單哦!
小編給大家分享一下捕獲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è)資訊頻道!
免責聲明:本站發(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)容。