Python try…except 異常處理模塊


作用:

處理程序異常、拋出異常、友好輸出異常

1. 如何捕獲異常、處理異常

格式:

try:
     pass
except
ValueError as e:
     pass
except
Exception as e:
     pass
else
:
     pass
finally
:
     pass

相關注釋:

try 包含在try下的所有代碼塊都會進行異常檢測處理
execpt 處理異常 其后面的e(標准故障信息)可以指定也可以不指定
finally 不管是否出現異常都會執行其下面的代碼塊

具體如下圖所示:

clip_image002

2. 異常的種類

上面的故障處理模塊只檢測了Exception異常類,其實這個故障是所有異常的基類(父類) 無論什么異常都可以用他進行處理,不過在程序中要處理指定異常那么就必須使用相關的派生類(子類)比如:

IndexError 下標錯誤

KeyError key錯誤

NameError 名稱錯誤

ValueError 值錯誤

那么如果我定義了NameError 和 ValueError Exception等等這些異常處理標簽如果我有一個ValueError的異常該如何進行處理呢?請看下圖

clip_image004

異常會從上到下一條條匹配異常處理標簽直到匹配到為止 ExceptError在正常情況下放在異常處理程序的最末端 來處理未知異常,如果有些異常需要特殊操作為,放在“except ExceptError”的上面。

3. 自定義異常

了解自定義異常之前 首先需要理解兩個概念:

1. 類中的方法__str__(self) 執行類的時候會返回其中的內容 用於輸出異常信息

例如:

#定義Alan_class類
class Alan_class(Exception):
    #定義__str__方法
     def __str__(self):
       #指定輸出信息
         return 'Alan Error'
#執行類Alan_class
print Alan_class()

輸出結果為:

Alan Error

2. raise 拋出異常

比如 執行 raise ValueError() 那么就會拋出一個 ValueError值錯誤的異常

了解完上面的兩個知識點下面開始了解如何進行定義自己的異常

clip_image006
通過上圖我們簡單的梳理下:
第一步:定義異常
 
class 異常名稱 (Exception):
      def __init__(self,msg)
            self.message=msg
      def __str__(self):  //定義__str__函數處理異常
            判斷是否輸入了自定義的異常信息
            if 輸入了:
                return ‘自定義異常信息’
            else:
                rerun ‘默認異常信息’
第二步:拋出並處理異常
 
raise 異常名稱(‘自定義異常信息’) //觸發異常
except 異常名稱,異常信息
      print 異常信息
 

4. assert 斷言

如果assert斷言的條件為假,則拋出異常AssertError,等同於 判斷+raise

try:
    #如果兩個字符串不相等則為假拋出異常
     assert 'Lisa' == 'Alan'
#except處理異常
except Exception:
     print 'name not same'

執行結果:

name not same


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM