異常

 

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

什麼是異常? python

1.錯誤 程序員

timg

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

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

當程序的語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤多是因爲不完整或是不合法的輸入所致; ide

在其它狀況下,還多是邏輯沒法生成、計算、或是輸出結果須要的過程沒法執行。這些錯誤一般分別被稱爲域錯誤和範圍錯誤。 code

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

2.異常 blog

對異常的最好描述是:它是由於程序出現了錯誤而在正常控制流之外採起的行爲。 get

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

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

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

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,以下實例:

相關文章
相關標籤/搜索