從幾年前開始學習程式設計直到現在,一直對程式中的異常處理懷有恐懼和排斥心理。之所以這樣,是因為不了解。這次攻python,先把自己最畏懼、最不熟悉的幾塊內容列出來,裡面就有「異常處理」這一項。
《pe into Python》並沒有特別介紹異常處理,只是例子中用到的時候略微說明了一下。今天下載《Learn Python》,直接進入異常處理這塊。這一部分有四章,第一章講解異常處理的一般使用方法,後面的章節深入地討論其機制。我目前只看了第一章,先學會用,以後有必要的時候再擴展閱讀。
python主要支援五種異常機制,一一列舉。
程式碼如下:
s = 'Hello girl!' print s[100] print 'continue'
如果我們沒有對異常進行任何預防,那麼在程式執行的過程中發生異常,就會中斷程序,呼叫python預設的異常處理器,並在終端輸出異常資訊。這種情況下,第3行程式碼不會執行。
程式碼如下:
s = 'Hello girl!' try: print s[100] except IndexError: print 'error...' print 'continue'
程式執行到第2句時發現try語句,進入try語句區塊執行,發生異常,回到try語句層,尋找後面是否有except語句。找到except語句後,就會呼叫這個自訂的異常處理器。 except將異常處理完畢後,程式繼續往下執行。這種情況下,最後兩個print語句都會執行。
except後面也可以為空,表示捕獲任何類型的例外。
程式碼如下:
s = 'Hello girl!' try: print s[100] finally: print 'error...' print 'continue'
finally語句表示,無論例外發生與否,finally中的語句都要執行。但是,由於沒有except處理器,finally執行完畢後程式便中斷。這種情況下,倒第2個print會執行,到第1個不會執行。如果try語句中沒有異常,三個print都會執行。
程式碼如下:
assert False,'error...' print 'continue'
這個語句,先判斷assert後面緊接的語句是True還是False,如果是True則繼續執行print,如果是False則中斷程序,呼叫預設的異常處理器,同時輸出assert語句逗號後面的提示訊息。本例情況下,程式中斷,提示error,後面的print不執行。
程式碼如下:
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中文網其他相關文章!