欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Python的異常處理

 更新時間:2016年06月19日 18:21:45   作者:jinx88  
這篇文章主要介紹了淺談Python的異常處理的相關(guān)資料,需要的朋友可以參考下

 Python的異常處理能力是很強(qiáng)大的,可向用戶準(zhǔn)確反饋出錯信息。在Python中,異常也是對象,可對它進(jìn)行操作。所有異常都是基類Exception的成員。所有異常都從基類Exception繼承,而且都在exceptions模塊中定義。Python自動將所有異常名稱放在內(nèi)建命名空間中,所以程序不必導(dǎo)入exceptions模塊即可使用異常。Python用異常對象(exception object)表示異常情況,遇到錯誤后,會引發(fā)異常。如果異常對象并未被處理或捕捉,程序就會用所謂的回溯(Traceback,一種錯誤信息)終止執(zhí)行。

注意:雖然大多數(shù)錯誤會導(dǎo)致異常,但一個異常不一定代表錯誤,有時候它們只是一個警告,有時候它們可能是一個終止信號,比如退出循環(huán)等。

一.與python異常相關(guān)的關(guān)鍵字

raise:手動拋出/引發(fā)異常:raise [exception[,data]
try/except:捕獲異常并處理
pass:忽略異常
as:定義異常實(shí)例(except IOError as e)
finally:無論是否出現(xiàn)異常,都執(zhí)行的代碼]
else:如果try中的語句沒有引發(fā)異常,則執(zhí)行else中的語句
except Exception as error:

二.python中的異常類型

1.StandardError類:如果程序上出現(xiàn)邏輯錯誤, 將引發(fā)該異常。StandardError類是所有內(nèi)斂異常的基類,放置在默認(rèn)的命名空間中,因此使用IOEroor, EOFError, ImportError等類,不需要導(dǎo)入exception模塊。

StopIteration類:判斷循環(huán)是否執(zhí)行到尾部,如果循環(huán)到尾部,則拋出該異常。
GeneratorExit類:是由Generator函數(shù)引發(fā)的異常,當(dāng)調(diào)用close()時引發(fā)該異常。
Warning類:表示程序中的代碼引起的警告。

三.基本方式:

1.try:

        語句1

  except  [exception1(,exception2...),[data…]]:

       語句2

  else:

       語句3

該種異常處理語法的規(guī)則是:

·   執(zhí)行try下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到第一個except語句。

·   如果第一個except中定義的異常與引發(fā)的異常匹配,則執(zhí)行該except中的語句。

·   如果引發(fā)的異常不匹配第一個except,則會搜索第二個except,允許編寫的except數(shù)量沒有限制。

·   如果所有的except都不匹配,則異常會傳遞到下一個調(diào)用本代碼的最高層try代碼中。

·   如果沒有發(fā)生異常,則執(zhí)行else塊代碼。

import traceback
try:
  1/0
except Exception as err:
  print(err)
try:
  f = open("file.txt","r")
except IOError as e:
  print(e)
try:
  f = open("file.txt","r")
except Exception as e:
  print(e)

 最后兩個的輸出是一模一樣的---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.try:

      語句1

  finally:

      語句2

該語句的執(zhí)行規(guī)則是:

·   執(zhí)行try下的代碼。

·   如果發(fā)生異常,在該異常傳遞到下一級try時,執(zhí)行finally中的代碼。

·   如果沒有發(fā)生異常,則執(zhí)行finally中的代碼。

第二種try語法在無論有沒有發(fā)生異常都要執(zhí)行代碼的情況下是很有用的。例如我們在python中打開一個文件進(jìn)行讀寫操作,我在操作過程中不管是否出現(xiàn)異常,最終都是要把該文件關(guān)閉的。這兩種形式相互沖突,使用了一種就不允許使用另一種,而功能又各異

所以,一般情況下,finally里面執(zhí)行的都是一些清理工作,比如:關(guān)閉文件描述符,釋放鎖等

注意,finally中,如果出現(xiàn)異常,外部如果沒有相應(yīng)的捕獲機(jī)制,該異常會層層拋出,直到最頂端,然后解釋器停止。一般在外層再加一次try except異常捕獲

三.手動使用raise引發(fā)異常

1.raise [exception[,data]]

2.在Python中,要想引發(fā)異常,最簡單的形式就是輸入關(guān)鍵字raise,后跟要引發(fā)的異常的名稱。異常名稱標(biāo)識出具體的類:Python異常是那些類的對象。執(zhí)行raise語句時,Python會創(chuàng)建指定的異常類的一個對象。raise語句還可指定對異常對象進(jìn)行初始化的參數(shù)。為此,請?jiān)诋惓n惖拿Q后添加一個逗號以及指定的參數(shù)(或者由參數(shù)構(gòu)成的一個元組)。

3.實(shí)例:

try:
  print("開始測試")
  raise IOError
except IOError:
  print("定義好的錯誤")
except:
  print("別的錯誤")

相關(guān)文章

最新評論