python 學習筆記十六 異常處理

異常

  • 程序運行過程中,不可避免的會出現一些錯誤,如變量未賦值就使用,索引越界等
  • 程序運行過程中,一旦出現異常,程序將會立即停止,異常以後的代碼不會執行
    在這裏插入圖片描述

處理異常

  • python希望在出現異常時,我們可以編寫代碼來對異常進行處理
try語句

  try:
    代碼塊(可能出現錯誤的語句)
  except:
    代碼塊(出現錯誤後的處理方式)
  else:
    代碼塊(沒出錯時要執行的語句)
  finally:
    代碼塊(該代碼塊始終都執行)

try語句必須有,else語句可有無,
try中語句出錯時,會執行except語句中的代碼
在這裏插入圖片描述
try語句沒有錯誤時,else中的代碼會執行
在這裏插入圖片描述

異常的傳播

  • 當函數中出現異常時,如果在函數中對異常進行處理,則異常不會在傳播;如果函數中沒有處理,則傳遞到調用處;

從函數裏異常處傳遞到調用處
在這裏插入圖片描述

  • 如果函數調用處處理了異常則不傳播,如果沒處理則繼續傳播,直至傳遞到全局作用域時還沒有處理,則程序終止,並顯示異常。

異常對象

  • 如果except後不跟任何內容,則此時它會捕獲所有異常,如果在except後跟着一個異常類型,則只捕獲該類型的異常;如果在except後面跟一個exception則和不跟任何內容一樣;

  try:
    代碼塊(可能出現錯誤的語句)
  except 異常:
    代碼塊(出現錯誤後的處理方式)
  else:
    代碼塊(沒出錯時要執行的語句)

輸出一個未定義的變量會引起NameError異常
在這裏插入圖片描述
在except後指定NameError,則except只捕獲NameError異常
在這裏插入圖片描述
捕獲多個異常時可以寫多個except語句,但這種方式程序只會捕捉第一個異常不會管後面的;

查看異常對象

except exception as e:
  print(‘未知異常’,e,type(e))
在這裏插入圖片描述

finally
  • finally 子句不管怎麼樣,都會執行
    finally:
      代碼塊

出現異常時,finally語句執行
在這裏插入圖片描述
不出現異常時,finally語句執行
在這裏插入圖片描述

拋出異常

  • raise可以用於向外部拋出異常,後面可以跟一個異常類或異常類的實例
  • 拋出異常的目的是告訴調用者這裏調用時出現問題,希望它自己處理
    在這裏插入圖片描述
  • 自定義異常類,創建一個類繼承Exception即可
    在這裏插入圖片描述
發佈了55 篇原創文章 · 獲贊 27 · 訪問量 7285
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章