異常

 

異常處理在任何一門編程語言裏都是值得關注的一個話題,良好的異常處理可以讓你的程序更加健壯,清晰的錯誤信息更能幫助你快速修復問題。在Python中,和部分高級語言一樣,使用了try/except/finally語句塊來處理異常,如果你有其他編程語言的經驗,實踐起來並不難。

什麼是異常?

1.錯誤

timg

從軟件方面來說,錯誤是語法或是邏輯上的。錯誤是語法或是邏輯上的。

語法錯誤指示軟件的結構上有錯誤,導致不能被解釋器解釋或編譯器無法編譯。這些些錯誤必須在程序執行前糾正。

當程序的語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤可能是由於不完整或是不合法的輸入所致;

在其它情況下,還可能是邏輯無法生成、計算、或是輸出結果需要的過程無法執行。這些錯誤通常分別被稱爲域錯誤和範圍錯誤。

當python檢測到一個錯誤時,python解釋器就會指出當前流已經無法繼續執行下去。這時候就出現了異常。

2.異常

對異常的最好描述是:它是因爲程序出現了錯誤而在正常控制流以外採取的行爲。

這個行爲又分爲兩個階段:首先是引起異常發生的錯誤,然後是檢測(和採取可能的措施)階段。

第一階段是在發生了一個異常條件(有時候也叫做例外的條件)後發生的。

只要檢測到錯誤並且意識到異常條件,解釋器就會發生一個異常。引發也可以叫做觸發,拋出或者生成。解釋器通過它通知當前控制流有錯誤發生。

python也允許程序員自己引發異常。無論是python解釋器還是程序員引發的,異常就是錯誤發生的信號。

當前流將被打斷,用來處理這個錯誤並採取相應的操作。這就是第二階段。

對於異常的處理髮生在第二階段,異常引發後,可以調用很多不同的操作。

可以是忽略錯誤(記錄錯誤但不採取任何措施,採取補救措施後終止程序。)或是減輕問題的影響後設法繼續執行程序。

所有的這些操作都代表一種繼續,或是控制的分支。關鍵是程序員在錯誤發生時可以指示程序如何執行。

python用異常對象(exception object)來表示異常。遇到錯誤後,會引發異常。

如果異常對象並未被處理或捕捉,程序就會用所謂的回溯(traceback)終止執行

異常處理

捕捉異常可以使用try/except語句。

try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。

如果你不想在異常發生時結束你的程序,只需在try裏捕獲它。

語法:

以下爲簡單的try....except...else的語法:

try:
<語句>        #運行別的代碼
except <名字>:
<語句>        #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句>        #如果引發了'name'異常,獲得附加的數據
else:
<語句>        #如果沒有異常發生

Try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這裏,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。

  1. 如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。

  2. 如果在try後的語句裏發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並打印缺省的出錯信息)。

  3. 如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。

使用except而不帶任何異常類型

你可以不帶任何異常類型使用except,如下實例:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章