• 當前位置:首頁 > IT技術 > 編程語言 > 正文

    python 異常處理
    2021-10-28 15:15:58

    python中,至少有兩種可區分的錯誤:語法錯誤(syntax error)和異常(exceptions)

    目錄

    語法錯誤(syntax error)

    異常(exception)

    處理異常

    其他


    語法錯誤(syntax error)

    語法錯誤(syntax error)又稱為解析錯誤(parsing error)

    因為python是一種腳本,沒有python編譯器這種說法,只有python解釋器

    所以python不存在編譯錯誤,只有解析錯誤

    出現語法錯誤時,python解釋器會輸出出現錯誤的行

    并顯示一個小箭頭,指向行中最早出現錯誤的點

    就像這樣

    python 異常處理_try


    異常(exception)

    即便語句或表達式在語法上是正確的

    然而當嘗試執行腳本時,同樣可能會引起錯誤,這種錯誤就是異常(exceptions)

    當然,這些異常并非在所有情況下都是致命的

    異常分很多種類,python解釋器會輸出內置異常的名稱給我們做參考

    異常的分類可以參見以下官方文檔:

    https://docs.python.org/2/library/exceptions.html#bltin-exceptions


    處理異常

    和java類似,python中我們可以實現處理我們自己選定的異常,例如:

    python 異常處理_try_02

    運行結果如下,當輸入的是int類型的數據時,break跳出while,運行成功

    python 異常處理_except_03

    當輸入的是非int類型時,程序會不斷提示你,直到你輸入正確的類型(當然我們可以用ctrl+C中斷運行)

    python 異常處理_exception_04

    實際上,用戶輸入ctrl+C中斷程序的運行

    其本質上也是昌盛了一種異常,也就是?KeyboardInterrupt 異常

    當我們處理異常時:

    • try和except之間的語句被執行
    • 若沒有異常發生,except語句將不被執行
    • 若try和except之間的語句被執行時發生了異常,則該部分剩下的語句不再被執行,若except捕捉到了異常的類型,則直接跳轉去執行except的語句,然后繼續執行try和except之間剩下的語句
    • 若try和except之間的語句被執行時發生了異常,則該部分剩下的語句不再被執行,若except沒有捕捉到了異常的類型,那么這就是一個未被處理的異常(Unhandled exception),程序運行被終止

    一個try后面可以跟著多個except語句

    用于指定處理不同類型的異常

    但是只有一個exception中的語句會被執行

    一個exception也可以處理多種異常,我們可以用元組來完成(用圓括號,這個不能漏掉),例如:

    python 異常處理_異常_05

    有的朋友們寫程序時,喜歡在最后會加上一個省略異常名稱的except字句,作為通配符使用

    當然這也寫時要特別小心,因為這也寫可能會掩蓋程序真正的異常所在,最好在后面把異常raise回去,就像這樣:

    python 異常處理_except_06

    當出現I/Oerror時:

    python 異常處理_exception_07

    若出現ValueError時:

    python 異常處理_python_08

    python 異常處理_try_09

    我們把程序稍微修改一下

    python 異常處理_異常_10

    此時,就會執行第3個except中的語句

    python 異常處理_python_11


    其他

    在except語句中,我們還可以在異常的后面指定變量

    變量與異常的instance綁定(捕獲的異常也是對象)參數存儲在instance.args中

    此外,我們還可以自己定義異常,這些高級的用法本文先不提了

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码