Python學習筆記9 異常處理

2022-08-01 05:15:08 字數 1698 閱讀 5475

就看這篇部落格吧:

一篇搞定所有的異常處理,講的很詳細。

異常

python中各種異常也是類,類exception繼承自類baseexception,還有其他各種異常等等,此外,通過繼承baseexception或者exception可以自定義異常。

異常處理

python直譯器檢測到錯誤,觸發異常(也允許程式設計師自己觸發異常);程式設計師編寫特定的**,專門用來捕捉這個異常(這段**與程式邏輯無關,與異常處理有關);如果捕捉成功則進入另外乙個處理分支,執行你為其定製的邏輯,使程式不會崩潰,這就是異常處理。

異常處理幫助debug,通過更加豐富的資訊,讓人們更容易找到bug的所在。異常處理可以提高程式的容錯性。

常用語法結構:

如果錯誤可預知,可以使用if語句進行處理,預防錯誤

如果錯誤不可預知,則需要用到try..except:在錯誤發生之後進行處理

try

: ...

except

exception1:

...except

exception2:

...except

: ...

else

: ...

finally

: ...

如果try中有異常發生時,將執行異常的歸屬,執行except。異常層層比較,看是否是exception1, exception2...,直到找到其歸屬,執行相應的except中的語句。如果except後面沒有任何引數,那麼表示所有的exception都交給這段程式處理。

如果try中沒有異常,那麼except部分將跳過,執行else中的語句。

finally是無論是否有異常,最後都要做的一些事情。

流程如下,

try->異常->except->finally

try->無異常->else->finally

如果無法將異常交給合適的物件,異常將繼續向上層丟擲,直到**捉或者造成主程式報錯,如:

def

test_func():

try:

m = 1/0

except

nameerror:

print("

catch nameerror in the sub-function")

try:

test_func()

except

zerodivisionerror:

print("

catch error in the main program

")

子程式的try...except...結構無法處理相應的除以0的錯誤,所以錯誤被拋給上層的主程式。

raise語句

主動觸發異常

自定義異常

需要class類

斷言:aeesrt條件判斷

斷言關鍵字aeesrt,

assert 語句(塊)

當這個關鍵字後邊的條件為假的時候,程式自動崩潰並丟擲assertionerror的異常。一般來說我們可以用assert在程式中置入檢查點,當需要確保程式中某個條件一定為真才能讓程式正常工作的話,assert關鍵字就非常有用了。

python學習筆記 異常處理

try 多個except else finally語句 try 塊是此語句的主要動作,嘗試執行的 except分句捕獲且處理try 塊內引發的異常,else分句是try沒有發生異常時要執行的處理器。finally語句不管異常是否發生都會去執行的,如果沒有異常發生,執行完try 塊後執行finally...

python學習筆記 異常處理

什麼是異常 異常就是程式執行時發生錯誤的訊號 在程式出現錯誤時,則會產生乙個異常,若程式沒有處理它,則會 丟擲該異常,程式的執行也隨之終止 語法錯誤 不按照語言基準來寫 print hello 邏輯錯誤 res 1 0 zerodivisionerror l 1.2 l 10 indexerror ...

python學習筆記 異常處理

assertionerror 斷言語句失敗 attributeerror 嘗試訪問未知的物件屬性 indexerror 索引超出序列的範圍 keyerror 字典中查詢乙個不存在的關鍵字 nameerror 嘗試訪問乙個不存在的變數 oserror 作業系統產生的異常 syntaxerror pyt...