什麼是異常? python
1.錯誤 程序員
從軟件方面來講,錯誤是語法或是邏輯上的。錯誤是語法或是邏輯上的。 編程
語法錯誤指示軟件的結構上有錯誤,致使不能被解釋器解釋或編譯器沒法編譯。這些些錯誤必須在程序執行前糾正。 編程語言
當程序的語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤多是因爲不完整或是不合法的輸入所致; 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子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
若是當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就經過整個try語句(除非在處理異常時又引起新的異常)。
若是在try後的語句裏發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並打印缺省的出錯信息)。
若是在try子句執行時沒有發生異常,python將執行else語句後的語句(若是有else的話),而後控制流經過整個try語句。
你能夠不帶任何異常類型使用except,以下實例: