久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Python 異常處理機(jī)制詳解

      Python 異常處理機(jī)制詳解

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

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

      try: #…except Exception: #…

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

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

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

      Python 異常處理機(jī)制詳解

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

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

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

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

      Python 異常處理機(jī)制詳解

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

      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ì)捕獲到該類(lèi)型異常,同時(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)行過(guò)程中,還可能由于其他因素出現(xiàn)異常,try 塊都可以捕獲,同時(shí) Python 會(huì)調(diào)用最后一個(gè) except 塊來(lái)處理。

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

      推薦教程:《Python教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)