python異常

jopen 10年前發布 | 33K 次閱讀 Python開發 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!