国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

通過實(shí)例了解Python異常處理機(jī)制底層實(shí)現(xiàn)

瀏覽:62日期:2022-07-16 14:23:32

要了解try except異常處理的用法,簡單來說,當(dāng)位于 try 塊中的程序執(zhí)行出現(xiàn)異常時(shí),會(huì)將該種異常捕獲,同時(shí)找到對(duì)應(yīng)的 except 塊處理該異常,那么這里就有一個(gè)問題,它是如何找到對(duì)應(yīng)的 except 塊的呢?

我們知道,一個(gè) try 塊也可以對(duì)應(yīng)多個(gè) except 塊,一個(gè) except 塊可以同時(shí)處理多種異常。如果我們想使用一個(gè) except 塊處理所有異常,就可以這樣寫:

try: #...except Exception: #...

這種情況下,對(duì)于 try 塊中可能出現(xiàn)的任何異常,Python解釋器都會(huì)交給僅有的這個(gè) except 塊處理,因?yàn)樗膮?shù)是 Exception,表示可以接收任何類型的異常。

注意,對(duì)于可以接收任何異常的 except 來說,其后可以跟 Exception,也可以不跟任何參數(shù),但表示的含義都是一樣的。

這里就要詳細(xì)介紹一下 Exception。要知道,為了表示程序中可能出現(xiàn)的各種異常,Python 提供了大量的異常類,這些異常類之間有嚴(yán)格的繼承關(guān)系,圖 1 顯示了 Python 的常見異常類之間的繼承關(guān)系。

通過實(shí)例了解Python異常處理機(jī)制底層實(shí)現(xiàn)

從圖 1 中可以看出,BaseException 是Python 中所有異常類的基類,但對(duì)于我們來說,最主要的是Exception 類,因?yàn)槌绦蛑锌赡艹霈F(xiàn)的各種異常,都繼承自 Exception。

因此,如果用戶要實(shí)現(xiàn)自定義異常,不應(yīng)該繼承 BaseException ,而應(yīng)該繼承 Exception 類。關(guān)于如何自定義一個(gè)異常類,可閱讀《Python自定義異常類》一節(jié)。

當(dāng) try 塊捕獲到異常對(duì)象后,Python 解釋器會(huì)拿這個(gè)異常類型依次和各個(gè) except 塊指定的異常類進(jìn)行比較,如果捕獲到的這個(gè)異常類,和某個(gè) except 塊后的異常類一樣,又或者是該異常類的子類,那么 Python 解釋器就會(huì)調(diào)用這個(gè) except 塊來處理異常;反之,Python 解釋器會(huì)繼續(xù)比較,直到和最后一個(gè) except 比較完,如果沒有比對(duì)成功,則證明該異常無法處理。

圖 2 演示了位于 try 塊中的程序發(fā)生異常時(shí),從捕獲異常到處理異常的整個(gè)流程。

通過實(shí)例了解Python異常處理機(jī)制底層實(shí)現(xiàn)

下面看幾個(gè)簡單的異常捕獲的例子:

try: a = int(input('輸入 a:')) b = int(input('輸入 b:')) print( a/b )except ValueError: print('數(shù)值錯(cuò)誤:程序只能接收整數(shù)參數(shù)')except ArithmeticError: print('算術(shù)錯(cuò)誤')except Exception: print('未知異常')

該程序中,根據(jù)用戶輸入 a 和 b 值的不同,可能會(huì)導(dǎo)致 ValueError、ArithmeticError 異常:

如果用戶輸入的 a 或者 b 是其他字符,而不是數(shù)字,會(huì)發(fā)生 ValueError 異常,try 塊會(huì)捕獲到該類型異常,同時(shí) Python 解釋器會(huì)調(diào)用第一個(gè) except 塊處理異常; 如果用戶輸入的 a 和 b 是數(shù)字,但 b 的值為 0,由于在進(jìn)行除法運(yùn)算時(shí)除數(shù)不能為 0,因此會(huì)發(fā)生 ArithmeticError 異常,try 塊會(huì)捕獲該異常,同時(shí) Python 解釋器會(huì)調(diào)用第二個(gè) except 塊處理異常; 當(dāng)然,程序運(yùn)行過程中,還可能由于其他因素出現(xiàn)異常,try 塊都可以捕獲,同時(shí) Python 會(huì)調(diào)用最后一個(gè) except 塊來處理。

當(dāng)一個(gè) try 塊配有多個(gè) except 塊時(shí),這些 except 塊應(yīng)遵循這樣一個(gè)排序規(guī)則,即可處理全部異常的 except 塊(參數(shù)為 Exception,也可以什么都不寫)要放到所有 except 塊的后面,且所有父類異常的 except 塊要放到子類異常的 except 塊的后面。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 午夜免费福利网站 | 精品日本亚洲一区二区三区 | 亚洲国产欧美精品 | 黄色wwwwww| 91精品国产高清91久久久久久 | 日本特黄特色高清免费视频 | 久久免费国产视频 | 久久香蕉国产线看观看式 | 抱着cao才爽免费观看 | 99国产精品热久久久久久夜夜嗨 | 亚洲精品国产拍拍拍拍拍 | 亚洲一区二区三区四区五区六区 | 特级做人爱c级特级aav毛片 | 久揄揄鲁一二三四区高清在线 | 免费看片亚洲 | 成年男女免费视频网站播放 | 99久久精品免费国产一区二区三区 | 成人午夜兔费观看网站 | 精品韩国主播福利视频在线观看一 | 日本 欧美 国产 | 日本免费久久 | 亚洲一区毛片 | 九九精品成人免费国产片 | 欧美一级免费片 | 99re5久久在热线播放 | 久久美女精品国产精品亚洲 | 欧美第一视频 | 草久在线观看 | 中文字幕有码在线观看 | 日本免费三级网站 | 国产成人免费午夜性视频 | 久久成人a毛片免费观看网站 | 永久免费毛片在线播放 | 免费看成人频视在线视频 | 成人精品免费网站 | 免费国产一区二区三区 | 亚洲综合亚洲综合网成人 | www.亚洲天堂| 台湾黄三级高清在线观看播放 | 国产九九在线观看播放 | 久久国产精品夜色 |