首頁  >  文章  >  後端開發  >  python異常處理結構有哪幾種形式

python異常處理結構有哪幾種形式

silencement
silencement原創
2019-06-12 10:50:577426瀏覽

python異常處理結構有哪幾種形式

python主要支援五種異常機制,分別舉例。

預設的異常處理器

s = 'Hello girl!'
print s[100]
print 'continue'

如果我們沒有對異常進行任何預防,那麼在程式執行的過程中發生異常,就會中斷程序,呼叫python預設的異常處理器,並在終端輸出異常訊息。這種情況下,第3行程式碼不會執行。

try…except

s = 'Hello girl!'
try:
 print s[100]
except IndexError:
 print 'error...'
print 'continue'

程式執行到第2句時發現try語句,進入try語句區塊執行,發生異常,回到try語句層,尋找後面是否有except語句。找到except語句後,就會呼叫這個自訂的異常處理器。 except將異常處理完畢後,程式繼續往下執行。這種情況下,最後兩個print語句都會執行。

except後面也可以為空,表示捕獲任何類型的例外。

try…finally

s = 'Hello girl!'
try:
 print s[100]
finally:
 print 'error...'
print 'continue'

finally語句表示,無論異常發生與否,finally中的語句都要執行。但是,由於沒有except處理器,finally執行完畢後程式便中斷。這種情況下,倒第2個print會執行,到第1個不會執行。如果try語句中沒有異常,三個print都會執行。

with…as

with open('nothing.txt','r') as f:
 f.read()
 print 2/0
print 'continue'

我們平常在使用類似檔案的流物件時,使用完畢後要呼叫close方法關閉,很麻煩。這裡with…as語句提供了一個非常方便的替代方法:open開啟檔案後將傳回的檔案流物件賦值給f,然後在with語句區塊中使用。 with語句區塊完畢之後,會隱藏地自動關閉檔案。

如果with語句或語句區塊中發生異常,會呼叫預設的例外處理器處理,但檔案還是會正常關閉。

這種情況下,會拋出異常,最後的print不執行。

以上是python異常處理結構有哪幾種形式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn