異常

一.定義
1.錯誤
錯誤:程序中難免有錯誤,錯誤分爲:語法錯誤和邏輯錯誤
語法錯誤是指python語句不符合python的語法要求,在程序運行前就會報錯,此時還是處於python編譯器的檢測階段。
邏輯錯誤:例如超出範圍、類型錯誤等等。
2.異常
異常就是程序發生錯誤是發生的信號,在python中異常如下:
異常
異常由三部分組成:異常類型、異常值、異常追蹤信息。
二.常見的異常
在Python中不同的異常可以用不同的類型去標識,不同的異常用不同的類對象標識(python中統一了類和類型,也就是說類型就是類),一種異常標識一種錯誤。
常用的異常:
異常
三.異常處理
1.什麼是異常處理?
當Python解釋器檢查到錯誤時就會自動觸發異常,當然我們也可以自己控制程序觸發異常。所以說,程序員可以編寫特定的代碼來專門捕抓不同的異常並進行處理(這些代碼與程序的邏輯無關,只是與異常處理有關)。如果異常成功被捕抓,則進入另一個處理分支,執行該種異常情況下的邏輯以避免程序崩潰,這種處理邏輯就是我們常說的異常處理。
2.爲何要進行異常處理?
python解釋器在檢測到錯誤時,會導致程序崩潰而不運行之後的代碼,此時就會影響程序的正常工作。爲了解決此種現象就會考慮到異常處理,通過自己爲程序提供一種異常機制來增強我們程序的健壯性和容錯性。
例如:在生活中,我們的電腦當CUP等器件溫度太高時,電腦就會自動報警並自動關機進行降溫處理。
3.如何進行異常處理
異常是由程序的錯誤引起的,語法上的錯誤跟異常無關,必須在程序運行前進行修正。
Python爲每一種異常定製了一個類型,然後提供看一種特定的語法結構來進行異常處理。
3.1基本語法

try:
    異常檢測代碼
except 異常類型A:
    發生該A異常時的邏輯代碼
except 異常類型B:
    發生該B異常時的邏輯代碼
......
else(可省略):
    未發生異常時的邏輯代碼
finally(可省略):
    不管是否發生異常,均應執行的代碼塊
繼續其他邏輯代碼

異常
3.2當然我們除了使用標準的try-except結構外,還可以使用if-elsif-else來處理異常,但是相對來說,try-except更方便、更簡潔,也更規範化,使程序更健壯。try-except可以把錯誤處理和真正的工作分開來,使代碼更易組織、更清晰,使複雜的工作任務更容易實現。
4.萬能異常捕抓
從3中,我們發現,如果try中被檢測的語句很多,那麼可能發生的錯誤及錯誤類型就可能會很多,此時就會考慮到很多種except分支來判斷異常類型,在實際中會非常麻煩,我們也不可能去一一考慮所有的可能發生的異常類型。這時,我們可以考慮使用一個except來捕抓所有類型的異常,基本結構如下所示:

try:
    被檢測的代碼塊
except exception as e:
    發生異常是執行的代碼塊
else(可省略):
    未發生異常時執行的代碼塊
finally(可省略):
    不管是否發生異常,均應執行的代碼塊
繼續其他邏輯代碼

見下圖:
異常
5.萬能異常的使用場景
既然有了萬能異常,那麼是不是說,在實際編程中,我們就可以使用萬能異常來處理所有的異常情況呢?
如果在實際中,我們只需要用一段代碼就能處理所有的異常邏輯,那麼此時你可以直接使用萬能異常來進行捕抓並操作。但是該種操作實際上用的不多。
在實際中,我們往往需要根據不同的異常情況來考慮不同的異常處理邏輯,此時還是老老實實的使用except異常分支來逐次捕抓處理吧!
6.自定義異常
異常
7.主動觸發異常

四.說明
try-except異常處理應該儘量少用,它本身就是你給程序附加的一種異常處理邏輯,與程序的主邏輯沒有關係,異常處理加多了將導致代碼的可讀性變差。只有在某些異常是無法預知的情況下,才應該加上try--except,其他的邏輯應該自己儘量修正。

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