Python培訓教程分享:Python異常機制

千鋒教育qyf發表於2021-11-30

  在 學習Python技術的時候,我們經常會遇到一些異常,例如導致程式在執行過程中出現的中斷或退出,我們都稱之為異常,大多數的異常都不會被程式處理,而是以錯誤資訊的形式展現出來。本期 Python培訓教程就算教大家關於Python異常機制的內容。

src=http___img3.appinn.com_images_201902_js

  Python培訓教程分享:Python異常機制,首先我們要理解什麼叫做異常?

  在程式執行過程中,總會遇到各種各樣的問題和錯誤。有些錯誤是我們編寫程式碼時自己造成的:比如語法錯誤、呼叫錯誤,甚至邏輯錯誤。還有一些錯誤,則是不可預料的錯誤,但是完全有可能發生的:比如檔案不存在、磁碟空間不足、網路堵塞、系統錯誤等等。

  這些導致程式在執行過程中出現異常中斷和退出的錯誤,我們統稱為異常。大多數的異常都不會被程式處理,而是以錯誤資訊的形式展現出來。

  異常的分類:

  異常有很多種型別,Python內建了幾十種常見的異常,無需特別匯入,直接就可使用。

  需要注意的是,所有的異常都是異常類,首字母是大寫的!

  異常的危害:

  如果程式中一旦出現了異常的語句程式碼,則該異常就會立即中斷程式的執行!

  因此:為了保證程式的正常執行,提高程式健壯性和可用性。我們應當儘量考慮全面,將可能出現的異常進行處理,而不是留在那裡,任由其發生。

  基本語法:

  異常的基本結構:try except

  # (1)通用異常

  try:

  pass # 正常執行語句

  except Exception as ex:

  pass # 異常處理語句

  # (2)指定異常

  try:

  pass # 正常執行語句

  except <異常名>:

  pass # 異常處理語句

  #(3) 捕獲多個異常

  # 捕獲多個異常有兩種方式,第一種是一個except同時處理多個異常,不區分優先順序:

  try:

  pass # 正常執行語句

  except (<異常名1>, <異常名2>, ...):

  pass # 異常處理語句

  # 第二種是區分優先順序的:

  try:

  pass # 正常執行語句

  except <異常名1>:

  pass # 異常處理語句1

  except <異常名2>:

  pass # 異常處理語句2

  except <異常名3>:

  pass # 異常處理語句3

  # 異常巢狀

  try:

  try:

  with open("abc") as f:

  pass

  except NameError as e:

  print(e)

  except OSError as e:

  print("OSError:",e.strerror)

  機制說明:

  首先,執行try子句(在關鍵字try和關鍵字except之間的語句)

  如果沒有異常發生,忽略except子句,try子句執行後結束。

  如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分將被忽略。如果異常那麼對應的except子句將被執行。

  在Python的異常中,有一個通用異常:Exception,它可以捕獲任意異常。

  finally

  try:

  pass # 正常執行語句

  except Exception as e:

  pass # 異常處理語句

  finally:

  pass # 無論是否發生異常一定要執行的語句,比如關閉檔案,資料庫或者socket

  raise語句

  很多時候,我們需要主動丟擲一個異常。Python內建了一個關鍵字raise,可以主動觸發異常。

  raise可以丟擲自定義異常,我們已將在前面看到了python內建的一些常見的異常型別。大多數情況下,內建異常已經夠用了。但是有時候你還是需要自定義一些異常:自定義異常應該繼承Exception類,直接繼承或者間接繼承都可以,例如:

  # 1.使用者自定義異常型別

  class TooLongExceptin(Exception):

  "this is user's Exception for check the length of name "

  def __init__(self, len):

  self.len = len

  def __str__(self):

  return "輸入姓名長度是" + str(self.len) + ",超過長度了"

  try:

  name = input("enter your name:")

  if len(name) > 5:

  raise TooLongExceptin(len(name))

  else:

  print(name)

  except TooLongExceptin as error: # 這裡異常型別是使用者自定義的

  print("列印異常資訊:", error)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996644/viewspace-2844987/,如需轉載,請註明出處,否則將追究法律責任。

相關文章