1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        關(guān)于Python異常處理,你需要了解的知識點

        共 2674字,需瀏覽 6分鐘

         ·

        2020-03-18 23:25

        2e731bca19d25d42b51735f2da36837e.webp

        什么是異常?

        當Python檢測到一個錯誤時,解釋器就無法繼續(xù)執(zhí)行了,并且給出一個錯誤提示。比如寫入文件的時候,磁盤滿了,寫不進去了,或者從網(wǎng)絡(luò)抓取數(shù)據(jù),網(wǎng)絡(luò)突然中斷。這時候,就需要捕獲處理它,否則程序會終止執(zhí)行。

        異常處理

        使用try/except/finally語句進行捕獲操作,并告訴Python發(fā)生異常時如何處理。

        首先,檢測try語句塊中的錯誤,except語句捕獲異常信息并處理。如果在try子句執(zhí)行時沒有發(fā)生異常,Python將執(zhí)行else語句后的語句,然后控制流通過整個try語句。

        如果在try后的語句里發(fā)生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層,并打印缺省的出錯信息。

        語法格式

        try:    # 可能觸發(fā)異常的語句塊except:  # 后面跟一個錯誤類型,當代碼發(fā)生錯誤且錯誤類型符合的時候,就會執(zhí)行except中的代碼,不寫具體錯誤類型,表示接收任何類型的異常    # 這里執(zhí)行異常處理的相關(guān)代碼,打印輸出等else:    # 如果沒有異常則執(zhí)行else中的代碼finally    # 不管代碼是否異常,都會執(zhí)行,一般是資源的關(guān)閉和釋放

        excep 異常/錯誤 as 別名,使用別名接收異常對象的錯誤信息。

        如何捕獲多個異常?

        1.寫出多行except 異常/錯誤,指定捕獲多個不同類型的異常。2.使用?except (異常1,異常2..),使用元組,在一行中捕獲多個不同類型的異常。
        異常捕獲示例代碼:

        try:    print(10/0)except NameError:    print('出現(xiàn) NameError 異常')except ZeroDivisionError:    print('出現(xiàn) ZeroDivisionError 異常')except IndexError:    print('出現(xiàn) IndexError 異常')except Exception as e :    print('未知異常',e,type(e))finally :    print('無論是否出現(xiàn)異常,該子句都會執(zhí)行')

        拋出異常

        我們使用raise語句觸發(fā)自定義異常。

        語法格式:

        raise 異常類名(附加異常信息)
        示例代碼:s = "asdfghjklqwe"try:    if len(s) > 10:        raise Exception("超過10個字符")except Exception as err:    print(err)

        自定義異常

        系統(tǒng)的自帶的異常只要觸發(fā)就會自動拋出,有時候,用戶自己決定什么時候拋出,并且給異常加上一些附加信息,這時候就可以使用自定義異常。

        示例代碼:

        # 自定義異常類,創(chuàng)建一個類繼承Exceptionclass MyError(Exception):    passdef add(a, b):    # a小于0,拋出異常    if a < 0:        raise MyError('自定義的異常')    return a + b
        print(add(-1, 5))

        異常定義好之后,與內(nèi)置類的用法一樣,在需要的時候raise出來就可以了。

        常見的使用異常的場景

        ?網(wǎng)絡(luò)請求相關(guān),比如網(wǎng)絡(luò)超時、連接異常等。?資源訪問相關(guān),比如文件的權(quán)限問題、文件的路徑、文件是否存在等。?代碼邏輯相關(guān),比如越界訪問、KeyError 等。

        Python標準異常

        異常名稱

        描述



        BaseException

        所有異常的基類

        SystemExit

        解釋器請求退出

        KeyboardInterrupt

        用戶中斷執(zhí)行(通常是輸入^C)

        Exception

        常規(guī)錯誤的基類

        StopIteration

        迭代器沒有更多的值

        GeneratorExit

        生成器(generator)發(fā)生異常來通知退出

        StandardError

        所有的內(nèi)建標準異常的基類

        ArithmeticError

        所有數(shù)值計算錯誤的基類

        FloatingPointError

        浮點計算錯誤

        OverflowError

        數(shù)值運算超出最大限制

        ZeroDivisionError

        除(或取模)零 ?(所有數(shù)據(jù)類型)

        AssertionError

        斷言語句失敗

        AttributeError

        對象沒有這個屬性

        EOFError

        沒有內(nèi)建輸入,到達EOF 標記

        EnvironmentError

        操作系統(tǒng)錯誤的基類

        IOError

        輸入/輸出操作失敗

        OSError

        操作系統(tǒng)錯誤

        WindowsError

        系統(tǒng)調(diào)用失敗

        ImportError

        導入模塊/對象失敗

        LookupError

        無效數(shù)據(jù)查詢的基類

        IndexError

        序列中沒有此索引(index)

        KeyError

        映射中沒有這個鍵

        MemoryError

        內(nèi)存溢出錯誤(對于Python 解釋器不是致命的)

        NameError

        未聲明/初始化對象 (沒有屬性)

        UnboundLocalError

        訪問未初始化的本地變量

        ReferenceError

        弱引用(Weak reference)試圖訪問已經(jīng)垃圾回收了的對象

        RuntimeError

        一般的運行時錯誤

        NotImplementedError

        尚未實現(xiàn)的方法

        SyntaxError

        Python 語法錯誤

        IndentationError

        縮進錯誤

        TabError

        Tab 和空格混用

        SystemError

        一般的解釋器系統(tǒng)錯誤

        TypeError

        對類型無效的操作

        ValueError

        傳入無效的參數(shù)

        UnicodeError

        Unicode 相關(guān)的錯誤

        UnicodeDecodeError

        Unicode 解碼時的錯誤

        UnicodeEncodeError

        Unicode 編碼時錯誤

        UnicodeTranslateError

        Unicode 轉(zhuǎn)換時錯誤

        Warning

        警告的基類

        DeprecationWarning

        關(guān)于被棄用的特征的警告

        FutureWarning

        關(guān)于構(gòu)造將來語義會有改變的警告

        OverflowWarning

        舊的關(guān)于自動提升為長整型(long)的警告

        PendingDeprecationWarning

        關(guān)于特性將會被廢棄的警告

        RuntimeWarning

        可疑的運行時行為(runtime behavior)的警告

        SyntaxWarning

        可疑的語法的警告

        UserWarning

        用戶代碼生成的警告

        推薦閱讀

        8 個 Python 高效數(shù)據(jù)分析的技巧

        用Python求解線性規(guī)劃問題

        最全的 pip 使用指南,50% 你可能沒用過。

        瀏覽 50
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久毛久久久j| 欧美性生交18XXXXX无码| 国产一二三四| 亚洲无码另类| 国产又粗又长又硬黄色一级片| 中文字幕视频2023| 操逼影片| 国产精品无码专区AV免费播放| 色婷婷五月天在线观看| 成人免费网站在线观看|