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...