通常狀況下,程序沒法處理正常的邏輯執行過程時會發生異常。爲了處理程序在運行過程當中的異常和錯誤,python 一樣定義了不少的標準異常以及異常處理機制用來處理程序運行過程當中出現的異常。python
在 python 語言中,處理異常的關鍵字主要有:try、except、else、finally 以及 raise 關鍵字。編程
try 關鍵字:主要是檢測異常,若是發生異常狀況時將程序處理交給 except 關鍵字。後端
except 關鍵字:獲取異常並進行處理。微信
else 關鍵字:在執行完 try 關鍵字域中的代碼塊時,若是沒有發現異常則接着執行 else 關鍵字代碼塊中的內容。編程語言
finally 關鍵字:不管是否發生異常都進入該關鍵字的域進行處理,一般主要處理資源關閉、對象內存釋放等必須的操做。性能
raise 關鍵字:用於拋出自定義的異常信息使程序不能直接向下執行。spa
異常關鍵字一般都有多種方式進行組合以後使用,不一樣的組合更是能完成不一樣的異常處理場景。合理的異常處理不只能完善程序執行過程當中的邏輯操做,也能提高程序執行的性能。code
try...except...else 組合異常處理對象
1 try: 2 print "正常處理邏輯" 3 except Exception,e: 4 print "異常處理邏輯" 5 else: 6 print "執行完成,沒有發現異常"
1 try: 2 print "正常處理邏輯" 3 except: 4 print "異常處理邏輯" 5 else: 6 print "執行完成,沒有發現異常"
這個組合在處理異常時,第一種處理方式 except 關鍵字後面跟上了具體的異常對象、第二種則沒有,若是按照第二種狀況不添加任何的異常對象則表示捕獲處理全部的異常,缺點是不能輸出具體的異常信息。繼承
1 try: 2 print "正常處理邏輯" 3 except WindowsError,e1: 4 print "異常信息:",e1.message 5 print "異常邏輯處理" 6 except ImportError,e2: 7 print "異常信息:",e2.message 8 print "異常邏輯處理"
這種是多異常處理組合,經過將多個 except 關鍵字鏈接的形式捕獲不一樣的異常並進行異常處理的程序邏輯。
try...finally 組合異常處理
1 try: 2 print "正常邏輯處理" 3 finally: 4 print "釋放資源"
執行正常的程序邏輯,不管 try 的代碼塊內是否檢測到異常信息都要執行 finally 代碼塊裏面的程序邏輯。
try...except...finally 組合異常處理
1 try: 2 print "正常邏輯處理" 3 try: 4 print "正常邏輯處理" 5 finally: 6 print "強制執行程序邏輯" 7 except Exception,e: 8 print "發生異常:",e.message 9 print "異常處理邏輯"
在不少的編程語言中也提供了能夠自定義異常的操做,python 也有着本身能夠自定義異常而且使用自定義的方式。使用的思惟方式也是大體相同,都是經過繼承標準的異常以後封裝成本身的異常對象而後在合適的處理邏輯中將自定義的異常拋出。
定義自定義異常
1class CustomException(Exception): 2 def __init__(self,err): 3 self.args = err
使用自定義異常
1 a = int(raw_input()) 2 if a < 0: 3 raise CustomException("類型輸入錯誤") 4 else: 5 print "正常邏輯"
更多精彩前往微信公衆號【Python 集中營】,專一後端編程實戰,原創文章天天更新!