<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一篇文章帶你弄懂Python異常簡(jiǎn)介和案例分析

          共 2689字,需瀏覽 6分鐘

           ·

          2021-06-20 23:40

          點(diǎn)擊上方“Go語(yǔ)言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語(yǔ)言”即可獲贈(zèng)從入門(mén)到進(jìn)階共10本電子書(shū)

          似此星辰非昨夜,為誰(shuí)風(fēng)露立中宵。

          大家好,我是Go進(jìn)階者,今天給大家分享一些Python基礎(chǔ) (異常),一起來(lái)看看吧~

          一、異常簡(jiǎn)介

          當(dāng)Python檢測(cè)到一個(gè)錯(cuò)誤時(shí),解釋器就無(wú)法繼續(xù)執(zhí)行了,反而出現(xiàn)了一些錯(cuò)誤的提示,這就是所謂的"異常"。


          二、案例分析

            打開(kāi)一個(gè)不存在的文件123.txt,當(dāng)找不到123.txt 文件時(shí),就會(huì)拋出給我們一個(gè)IOError類型的錯(cuò)誤,No such file or directory:123.txt (沒(méi)有123.txt這樣的文件或目錄)。

          print'-----test--1---'open('123.txt','r')print '-----test--2---'

          運(yùn)行結(jié)果:

          <1>捕獲異常 try...except...

          例:

          try:    print('-----test--1---')    open('123.txt','r')    print('-----test--2---')except IOError:    pass

          運(yùn)行結(jié)果:

          說(shuō) 明 :

          • 此程序看不到任何錯(cuò)誤,因?yàn)橛胑xcept 捕獲到了IOError異常,并添加了處理的方法。

          • pass 表示實(shí)現(xiàn)了相應(yīng)的實(shí)現(xiàn),但什么也不做;如果把pass改為print語(yǔ)句,那么就會(huì)輸出其他信息。

          小總結(jié) :

          • 把可能出現(xiàn)問(wèn)題的代碼,放在try中。

          • 把處理異常的代碼,放在except中。

          <2> except捕獲多個(gè)異常

          例 :

          try:    print(num)except IOError:    print('產(chǎn)生錯(cuò)誤了')

          運(yùn)行結(jié)果 :

          想一想:

          上例程序,已經(jīng)使用except來(lái)捕獲異常了,為什么還會(huì)看到錯(cuò)誤的信息提示?

          答:

          except捕獲的錯(cuò)誤類型是IOError,而此時(shí)程序產(chǎn)生的異常為 NameError ,所以except沒(méi)有生效。

          修改后的代碼為 :

          try:   print(num)except NameError:    print('產(chǎn)生錯(cuò)誤了')

          運(yùn)行結(jié)果

          實(shí)際開(kāi)發(fā)中,捕獲多個(gè)異常的方式,如下:
          #coding=utf-8try:    print('-----test--1---')    open('123.txt','r') # 如果123.txt文件不存在,那么會(huì)產(chǎn)生 IOError 異常    print('-----test--2---')    print(num)# 如果num變量沒(méi)有定義,那么會(huì)產(chǎn)生 NameError 異常
          except (IOError,NameError): #如果想通過(guò)一次except捕獲到多個(gè)異常可以用一個(gè)元組的方式
          注意:

          當(dāng)捕獲多個(gè)異常時(shí),可以把要捕獲的異常的名字,放到except 后,并使用元組的方式僅進(jìn)行存儲(chǔ)。


          <3>獲取異常的信息描述

          try:    open("a.txt")except(NameError,IOError) as result:    print("捕抓到異常")    print("信息展示:",result)

          運(yùn)行結(jié)果:


          <4>捕獲所有異常

          try:    open("a.txt")except Exception as result:    print("捕抓到異常")    print("信息展示:",result)

          運(yùn)行結(jié)果:

          <5> else

          咱們應(yīng)該對(duì)else并不陌生,在if中,它的作用是當(dāng)條件不滿足時(shí)執(zhí)行的實(shí)行;同樣在try...except...中也是如此,即如果沒(méi)有捕獲到異常,那么就執(zhí)行else中的事情。

          try:    num = 100    print(num)except NameError as errorMsg:    print('產(chǎn)生錯(cuò)誤了:%s' % errorMsg)else:    print('沒(méi)有捕獲到異常,真高興')

          運(yùn)行結(jié)果如下:


          <6> try...finally...

            try...finally...語(yǔ)句用來(lái)表達(dá)這樣的情況:

          在程序中,如果一個(gè)段代碼必須要執(zhí)行,即無(wú)論異常是否產(chǎn)生都要執(zhí)行,那么此時(shí)就需要使用finally。比如文件關(guān)閉,釋放鎖,把數(shù)據(jù)庫(kù)連接返還給連接池等。

          demo:

          import timetry:    f = open('test.txt')    try:        while True:            content = f.readline()            if len(content) == 0:                break            time.sleep(2)            print(content)    except:        #如果在讀取文件的過(guò)程中,產(chǎn)生了異常,那么就會(huì)捕獲到        #比如 按下了 ctrl+c        pass    finally:        f.close()        print('關(guān)閉文件')except:    print("沒(méi)有這個(gè)文件")

          運(yùn)行結(jié)果:

          說(shuō)明:

          test.txt文件中每一行數(shù)據(jù)打印,但是我有意在每打印一行之前用time.sleep方法暫停2秒鐘。這樣做的原因是讓程序運(yùn)行得慢一些。在程序運(yùn)行的時(shí)候,按Ctrl+c中斷(取消)程序。

          我們可以觀察到KeyboardInterrupt異常被觸發(fā),程序退出。但是在程序退出之前,finally從句仍然被執(zhí)行,把文件關(guān)閉。


          三、總結(jié)

          本文講解了Python基礎(chǔ)之異常知識(shí) ,介紹了常見(jiàn)的異常操作,用豐富的案例,幫助大家更好的去了解異常常見(jiàn)的的基礎(chǔ)操作。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Go學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久视频免费在线观看 | 大粗鸡巴久久久久 | 国产伊人网| 成人免费视频 国产在线观看 | 91久久欧美极品XXXXⅩ |