TRY······EXCEPT
python
這個語句主要是捕獲異常,在python中的運行過程主要是:出現異常時,python將中止try中的語句進行,就愛那個異常傳遞給except子句,尋找可匹配的except子句,若是找到,將作except 組下面的處理,而後處理完成後再將控制權交給try,進行處理。進行這樣反覆操做。以下:
ui
try: open('aaa.txt') except IOError as e: pass
另外,TRY······EXCEPT 能夠加修飾語句,如:except Exception as var,若是出現異常將爲變量提供 raise語句異常類型的實例。異常處理程序能夠處理該值,並得到更多關於異常的信息。except 能夠指定多個異常代碼處理模塊,如:
spa
try: #do somethong except IOError as e: #處理I/O錯誤 except TypeError as e: #處理類型錯誤 except NameError as e: #處理名稱錯誤 error_log.write('An error occeurred : %s \n ' % e)
另一種方式:
code
try: #do somethong except (IOError,TypeError NameError ) as e: #處理錯誤 error_log.write('An error occeurred : %s \n ' % e)
使用Exception能夠捕捉除了與程序退出相關異常以外的全部異常,如:
it
try: #do somethong except (IOError,TypeError NameError ) as e: #處理錯誤 error_log.write('An error occeurred : %s \n ' % e)
TRY······EXCEPT······ELSE
try語句也支持else語句,可是else子句必須跟在最後一個except子句後面,若是try中的代碼未引起異常,則會執行else中的代碼。如:
io
try: f=open('foo.txt','r') except IOError as e: error_log.write('An error occeurred : %s \n ' % e) else : data=f.read() f.close()
TRY······EXCEPT ······FINALLY
class
f=open('foo.txt','r') try: #進行一些處理 finally: data=f.close() #不管發生什麼,都會關閉文件
finally子句不是用於捕獲異常,而是用於提供一些代碼,不管出現什麼錯誤都會執行該代碼。若是出現異常,控制權首先交給 finally,而後執行完畢後,將從新引起的異常交給另外的異常處理程序。若是未出現異常,try子句的代碼完畢後,當即執行finally子句中的代 碼。
自定義異常
require
class LengthRequiredException(Exception): def __init__(self,length,minLength): Exception.__init__(self) self.length = length self.minLength = minLength
引起自定義的異常
變量
l = [1,2,3,4,5] minLength = 6 try: raise LengthRequiredException(len(l),minLength) except IndexError: print("index out of bounds") except LengthRequiredException as e: print("Length not fit :length is %d required %d" %(e.length,e.minLength)) else: print("no exception was raised") finally: print("finally will be execute")