亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中異常類型及處理方式的示例分析

發布時間:2021-08-23 12:33:59 來源:億速云 閱讀:198 作者:小新 欄目:開發技術

這篇文章主要介紹Python中異常類型及處理方式的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    前言

    Python 是一種面向對象的、解釋型的、通用的、開源的腳本編程語言。現在市面上 Python 非常的流行,主要是因為它簡單易用,學習成本低,比如要實現某個功能,Python 可能只需要幾行代碼,而用C語言可能需要上百行代碼,因為C語言什么都要得從頭開始編碼,而 Python 已經內置了很多功能模塊,所以,我們只需要導入特定的包,就可以實現想要的效果。

    正文

    今天,我們主要來了解一下 Python 中的異常類型以及它們的處理方式。說到異常處理,我們首先要知道什么是異常。其實,異常就是一類事件,當它們發生時,會影響到程序的正常執行。

    一、什么是異常

    其實,異常就是一類事件,當此類事件在程序執行過程中發生時,就會影響程序的正常執行。一般情況下,在 Python 無法正常處理程序時就會發生一個異常,而異常是 Python 的一種對象類型,用來表示一個錯誤。當 Python 腳本發生異常時我們需要捕獲并處理它,否則程序就會終止。

    二、異常的類型

    Python 中定義了一些標準的異常類型,具體的異常名稱和對應的實際意義,我們可以通過下面的表格來了解。

    異常名稱描述
    BaseException所有異常的基類
    SystemExit解釋器請求退出
    KeyboardInterrupt用戶中斷執行(通常是輸入^C)
    Exception常規錯誤的基類
    StopIteration迭代器沒有更多的值
    GeneratorExit生成器(generator)發生異常來通知退出
    StandardError所有的內建標準異常的基類
    ArithmeticError所有數值計算錯誤的基類
    FloatingPointError浮點計算錯誤
    OverflowError數值運算超出最大限制
    ZeroDivisionError除(或取模)零 (所有數據類型)
    AssertionError斷言語句失敗
    AttributeError對象沒有這個屬性
    EOFError沒有內建輸入,到達EOF 標記
    EnvironmentError操作系統錯誤的基類
    IOError輸入/輸出操作失敗
    OSError操作系統錯誤
    WindowsError系統調用失敗
    ImportError導入模塊/對象失敗
    LookupError無效數據查詢的基類
    IndexError序列中沒有此索引(index)
    KeyError映射中沒有這個鍵
    MemoryError內存溢出錯誤(對于Python 解釋器不是致命的)
    NameError未聲明/初始化對象 (沒有屬性)
    UnboundLocalError訪問未初始化的本地變量
    ReferenceError弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
    RuntimeError一般的運行時錯誤
    NotImplementedError尚未實現的方法
    SyntaxErrorPython 語法錯誤
    IndentationError縮進錯誤
    TabErrorTab 和空格混用
    SystemError一般的解釋器系統錯誤
    TypeError對類型無效的操作
    ValueError傳入無效的參數
    UnicodeErrorUnicode 相關的錯誤
    UnicodeDecodeErrorUnicode 解碼時的錯誤
    UnicodeEncodeErrorUnicode 編碼時錯誤
    UnicodeTranslateErrorUnicode 轉換時錯誤
    Warning警告的基類
    DeprecationWarning關于被棄用的特征的警告
    FutureWarning關于構造將來語義會有改變的警告
    OverflowWarning舊的關于自動提升為長整型(long)的警告
    PendingDeprecationWarning關于特性將會被廢棄的警告
    RuntimeWarning可疑的運行時行為(runtime behavior)的警告
    SyntaxWarning可疑的語法的警告
    UserWarning用戶代碼生成的警告

    其實,在上述表格中列出的異常中,也具備一定的層次關系,我們可以通過下圖來了解一下。

    Python中異常類型及處理方式的示例分析

    三、異常處理

    在實際開發過程中,我們需要寫出健壯性的程序,不希望我們的程序在執行過程中遇到了異常就自動終止。因此,我們需要處理程序執行過程中的異常事件,從而保證程序不會因為發生異常而終止。在編碼過程中,我們可以簡單使用 try/except 語句來捕捉異常,具體語法如下:

    try:
    <語句>        # 運行別的代碼
    except 異常類型:
    <語句>        # 如果在try部份引發了異常
    else:
    <語句>        # 如果沒有異常發生

    熟悉 Java 的小伙伴都知道,在 Java 中是通過 try...catch 語句來捕獲代碼中的異常事件的,在 Python 中使用什么呢?

    其實,在 Python 中是使用 try...except 語句用來捕獲異常,通過監視 try 語句塊中的錯誤,從而讓 except 語句捕獲異常信息并進行處理。

    因此,如果你不想在異常發生時結束你的程序,就需要在 try 語句塊中捕獲相應的異常。

    接下來,我們通過一個代碼實例來具體了解一下 try...except 的用法。

    代碼實例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    try:
        fh = open("test.txt", "r")
        fh.write("這是一個測試文件,用于測試Python中的異常!")
    except IOError:
        print "Error: 寫入文件失敗"
    else:
        print "內容寫入文件成功"
        fh.close()

    上述代碼的意思是以可讀模式打開一個 test.txt 文件,然后向文件中寫入一段話:這是一個測試文件,用于測試Python中的異常! 因為文件是以可讀模式打開的,所以沒有寫入權限,肯定會出錯,但是因為是在 try 代碼塊中,肯定會被對應的IO錯誤類型捕獲,并輸入提示信息:Error:寫入文件失敗。

    運行結果:

    Python中異常類型及處理方式的示例分析

    然后,我們修改代碼,以寫模式打開文件再寫入對應的語句,修改后代碼如下:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    try:
        fh = open("test.txt", "w")
        fh.write("這是一個測試文件,用于測試Python中的異常!")
    except IOError:
        print "Error: 寫入文件失敗"
    else:
        print "內容寫入文件成功"
        fh.close()

    這時,我們發現文件能夠正常寫入內容了,并且不會觸發異常事件發生。

    運行結果:

    Python中異常類型及處理方式的示例分析

    四、try 介紹

    try 的工作原理是,當開始一個 try 語句后,python 就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try 子句先執行,接下來會發生什么依賴于執行時是否出現異常。大致的情況可以分為兩種,一種是觸發了異常,另一種是沒有觸發異常,具體表現如下:

    1. 如果當 try 后的代碼里發生了異常,python 就跳回到 try 并執行第一個匹配該異常的 except 子句,異常處理完畢,控制流就通過整個 try 語句。

    2. 如果在 try 后的代碼里沒有發生異常,python將執行else語句后的語句,然后控制流通過整個try語句。

    其實,上面的代碼實例很好的覆蓋了這兩種情況。

    五、finally 介紹

    finally 語句塊中的內容,無論程序是否發生了異常都執行。這一點和 Java 是類似的,具體我們來看一段代碼:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    try:
        fh = open("test.txt", "r")
        fh.write("這是一個測試文件,用于測試Python中的異常!")
    except IOError:
        print "Error: 寫入文件失敗"
    else:
        print "內容寫入文件成功"
        fh.close()
    finally:
        print "異常發生了,執行finally代碼塊"

    上述代碼在原來的基礎上增加了 finally 代碼塊,發生了異常,依然會執行 finally 代碼塊。同樣,即使沒有觸發異常,也會執行相應的 finally 代碼塊。感興趣的小伙伴可以自己動手試一下,這里就不演示了。

    運行結果:

    Python中異常類型及處理方式的示例分析

    六、raise 介紹

    在 Java 中,我們可以使用 throw 語句主動拋出異常,那么在 Python 中,是否也有類似的關鍵字呢?答案是肯定的。接下來,我們就來了解一下 raise 關鍵字。在編碼過程中,我們可以使用 raise 語句主動觸發異常。具體的語法可以參考如下格式:

    raise [Exception [, args [, traceback]]]

    需要注意的是語句中 Exception 是異常的類型(例如,IOError、OSError),參數標準異常中任意一種,參數 args 是自已提供的異常參數。最后一個參數 trackback 是可選的,一般為空。

    實例代碼:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    try:
        fh = open("test.txt", "w")
        fh.write("這是一個測試文件,用于測試Python中的異常!")
    except IOError:
        print "Error: 寫入文件失敗"
    else:
        print "內容寫入文件成功"
        try:
    	print "拋出自定義異常"
        	raise Exception("這是一個自定義異常事件")
        except:
    	print "自定義異常事件被捕獲"
        fh.close()
     
    finally:
        print "自定義異常發生了,執行finally代碼塊"

    運行結果:

    Python中異常類型及處理方式的示例分析

    以上是“Python中異常類型及處理方式的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    赤峰市| 旌德县| 郁南县| 高唐县| 广河县| 普兰店市| 凉城县| 遵义县| 兴宁市| 鱼台县| 孟州市| 晋中市| 乌海市| 金湖县| 金沙县| 根河市| 兖州市| 大荔县| 伊金霍洛旗| 蒲城县| 留坝县| 乳源| 青阳县| 济宁市| 泸州市| 河池市| 贺州市| 平武县| 常山县| 松阳县| 临漳县| 甘谷县| 万盛区| 上虞市| 安宁市| 招远市| 密云县| 德庆县| 安西县| 奉贤区| 丰顺县|