Python異常處理

2021-09-19 09:22:17 字數 2359 閱讀 4204

1. try…except結構

異常處理結構中最常見也最基本的結構。其中try子句中的**塊包含可能出現的語句,而except子句用來不做相應的異常,except子句中的**塊用來處理異常。如果try中的**塊沒有出現異常,則繼續往下執行異常處理結構後面的**;如果出現異常並且被except子句捕獲,則執行except子句中的異常處理**;如果出現異常單沒有被except捕獲,則繼續往外層丟擲;如果所有層都沒有捕獲並處理該異常,則程式終止並將該異常拋給終端使用者。語法結構如下:

try:

try塊

except exception[as reason]:

exception塊

如果要捕獲所有型別異常,可以使用baseexception,即python異常類的基類,**格式如下:

try:

…except baseexception as e:

exception塊

2. try …except…else結構

帶else子句的異常處理結構是一種特殊形式的選擇結構。如果try中的**丟擲了異常,並且被某個except捕獲,則執行相應的異常處理**,這種情況下不會執行else中的**,依賴於try**塊成功執行的**都應該放到else**塊中;如果try中的**沒有丟擲任何異常,則執行else塊中的**。

工作原理:python嘗試執行try**塊中的**;只有可能引發異常的**才需要放在try語句中。有時候,有一些僅在try**塊成功執行時才需要執行的**,這些**應放在else**塊中。except**塊告訴python,如果他嘗試執行try**塊中的**時引發了指定的異常,該怎麼辦。通過**可能發生錯誤的**,可編寫健壯的程式,它們即使面臨無效資料或缺少資源,也能繼續執行,從而能抵禦無意的影虎錯誤和惡意的攻擊。

3. 帶有多個except的try結構

在實際開發中,同一段**可能會丟擲多個異常,需要針對不同異常型別進行相應的處理。為了支援多個異常的捕捉和處理,python提供了帶有過個except的異常處理結構,類似於多分支選擇結構。一旦某個except捕獲了異常,則後面剩餘的except子句將不會再執行。

將要捕獲的異常解除安裝乙個元組中,可以使用乙個except語句捕獲多個異常,並且共用同一段異常處理**,當然,除非確定要捕獲的多個異常可以使用同一段**來處理,否則並不建議這樣做。

4. try…except…finally結構

該結構指那個,finally自劇中的語句塊無論是否發生異常都會執行,常用來做一些清理工作以釋放try自劇中申請的資源。

需要注意的問題是,如果try子句中的異常沒有**獲和處理,或者except子句或else子句中的**出現了異常,那麼這些異常將會在finally子句執行完成後再次丟擲。finally中的**也可能會丟擲異常,使用帶有finally子句的異常處理結構時,應盡量避免在子句中使用return語句,否則可能會出現出乎意料的錯誤。

5. 斷言

python在unittest.testcase類中提過了很多斷言的方法。斷言方法檢查你認為該滿足的條件是否確實滿足。如果不滿足python將引發異常。

語法:assert expression[,reason]

assert語句一般用於對程式某個時刻必須滿足的條件進行驗證,僅當」debug」 為true時有效。當python指令碼以_()選項編譯為位元組碼檔案是,assert語句將被移除以提高執行速度。

6. 上下文管理

使用上下文管理語句with可以自動管理資源,在**塊執行完畢後自動還原進入改**塊之前的現場或上下文。不論何種原因跳出with塊,也不論是否發生異常,總能保證資源被正確釋放,大大簡化了程式設計師的工作,常用於檔案操作、網路通訊之類的場合。

with語句的語法如下:

with context_expr [as var]:

with塊

7. 用sys模組回溯最後的異常

當發生異常時python會回溯異常,給出大量的提示,可能會給程式設計師的定位和糾錯帶來一定的困難,這是可以使用sys模組回溯最近一次異常。語法為:

import sys

try:

block

except:

t==sys.exc_info()

print(t)

sys.exc_info()返回值是乙個三元組(type,value/message,traceback)。其中,type表示異常的型別,value/message表示異常的資訊或者引數,而traceback則包含呼叫棧資訊的物件。

sys.exc_info()可以直接定位最終引發異常的原因,結果比較簡潔,但是缺點是難以直接確定引發異常的**位置

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...