python異常
TRY······EXCEPT
這個語句主要是捕獲異常,在python中的運行過程主要是:出現異常時,python將停止try中的語句進行,就愛那個異常傳遞給except子句,尋找可匹配的except子句,如果找到,將做except 組下面的處理,然后處理完成后再將控制權交給try,進行處理。進行這樣反復操作。如下:
try: open('aaa.txt') except IOError as e: pass
另外,TRY······EXCEPT 可以加修飾語句,如:except Exception as var,如果出現異常將為變量提供 raise語句異常類型的實例。異常處理程序可以處理該值,并獲得更多關于異常的信息。except 可以指定多個異常代碼處理模塊,如:
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)
另外一種方式:
try: #do somethong except (IOError,TypeError NameError ) as e: #處理錯誤 error_log.write('An error occeurred : %s \n ' % e)
使用Exception可以捕捉除了與程序退出相關異常之外的所有異常,如:
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中的代碼。如:
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
f=open('foo.txt','r') try: #進行一些處理 finally: data=f.close() #無論發生什么,都會關閉文件
finally子句不是用于捕獲異常,而是用于提供一些代碼,無論出現什么錯誤都會執行該代碼。如果出現異常,控制權首先交給 finally,然后執行完畢后,將重新引發的異常交給另外的異常處理程序。如果未出現異常,try子句的代碼完畢后,立即執行finally子句中的代 碼。
自定義異常
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")
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!