亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

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

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

我們知道,一個 try 塊也可以對應多個 except 塊,一個 except 塊可以同時處理多種異常。如果我們想使用一個 except 塊處理所有異常,就可以這樣寫:

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

這種情況下,對于 try 塊中可能出現(xiàn)的任何異常,Python解釋器都會交給僅有的這個 except 塊處理,因為它的參數(shù)是 Exception,表示可以接收任何類型的異常。

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

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

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

從圖 1 中可以看出,BaseException 是Python 中所有異常類的基類,但對于我們來說,最主要的是Exception 類,因為程序中可能出現(xiàn)的各種異常,都繼承自 Exception。

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

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

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

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

下面看幾個簡單的異常捕獲的例子:

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

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

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

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

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

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 色啊色 | 国产精品99久久99久久久看片 | 丝袜足液精子免费视频 | 婷婷久久五月天 | 成人免费国产欧美日韩你懂的 | 精品国产香蕉伊思人在线又爽又黄 | 色花堂的网站地址 | 在线看黄免费 | 成人午夜久久 | 一级毛片免费观看不卡的 | 亚洲一区二区三区免费看 | 久久久久久91精品色婷婷 | 国产高清三级 | 亚洲精品午夜久久aaa级久久久 | 日韩一区二区三区免费视频 | 免费黄色网址在线播放 | 青青自拍视频一区二区三区 | 欧美日韩大尺码免费专区 | 日本三级韩国三级三级a级按摩 | 激情啪啪网站 | 日本国产免费一区不卡在线 | 久久乐国产精品亚洲综合m3u8 | 在线 | 一区二区三区 | 亚洲综合日韩 | 精品国产中文一级毛片在线看 | 亚洲欧美一区二区三区二厂 | 自拍亚洲一区 | 国产精品揄拍100视频最近 | 艾小青亚洲专区在线播放 | 亚洲精品第五页中文字幕 | 亚洲成a人片在线观看中 | 九九热8 | 欧美久久超级碰碰碰二区三区 | 免费在线一区二区三区 | 草草影院ccyy国产日本欧美 | 欧美精品aaa久久久影院 | 久久综合九色综合97手机观看 | 欧美在线免费观看 | 亚洲一区二区三区福利在线 | 香蕉视频毛片 | 中国一级毛片aaa片 中国一级毛片在线观看 |