1. 一篇文章帶你弄懂Python異常簡介和案例分析

        共 2689字,需瀏覽 6分鐘

         ·

        2021-06-19 22:38

        點擊上方“Go語言進階學習”,進行關注

        回復“Go語言”即可獲贈從入門到進階共10本電子書

        似此星辰非昨夜,為誰風露立中宵。

        大家好,我是Go進階者,今天給大家分享一些Python基礎 (異常),一起來看看吧~

        一、異常簡介

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


        二、案例分析

          打開一個不存在的文件123.txt,當找不到123.txt 文件時,就會拋出給我們一個IOError類型的錯誤,No such file or directory:123.txt (沒有123.txt這樣的文件或目錄)。

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

        運行結果:

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

        例:

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

        運行結果:

        說 明 :

        • 此程序看不到任何錯誤,因為用except 捕獲到了IOError異常,并添加了處理的方法。

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

        小總結 :

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

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

        <2> except捕獲多個異常

        例 :

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

        運行結果 :

        想一想:

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

        答:

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

        修改后的代碼為 :

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

        運行結果

        實際開發(fā)中,捕獲多個異常的方式,如下:
        #coding=utf-8try:    print('-----test--1---')    open('123.txt','r') # 如果123.txt文件不存在,那么會產(chǎn)生 IOError 異常    print('-----test--2---')    print(num)# 如果num變量沒有定義,那么會產(chǎn)生 NameError 異常
        except (IOError,NameError): #如果想通過一次except捕獲到多個異??梢杂靡粋€元組的方式
        注意:

        當捕獲多個異常時,可以把要捕獲的異常的名字,放到except 后,并使用元組的方式僅進行存儲。


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

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

        運行結果:


        <4>捕獲所有異常

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

        運行結果:

        <5> else

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

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

        運行結果如下:


        <6> try...finally...

          try...finally...語句用來表達這樣的情況:

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

        demo:

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

        運行結果:

        說明:

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

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


        三、總結

        本文講解了Python基礎之異常知識 ,介紹了常見的異常操作,用豐富的案例,幫助大家更好的去了解異常常見的的基礎操作。

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

        往期精彩文章推薦:

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

        想加入Go學習群請在后臺回復【入群

        萬水千山總是情,點個【在看】行不行

        瀏覽 31
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 青青草青娱乐在线视频 | 中文字幕第4页 | 影音先锋夜夜亚洲 | 共妻高肉双腿打开h | 尤物在线免费观看 |