異常處理

異常處理:python

Trackback:異常的追蹤信息程序員

NameError:異常類安全

name ‘a’ is not defined:異常值編碼

 python中一個異常標識一種錯誤spa

異常類:操作系統

AttributeError:訪問一個對象沒有的屬性 NameError:未聲明,未初始化對象 IOError:輸入輸出異常,基本上是文件的打開出現錯誤 ImportError:沒法導入模塊或者包,(可能因爲路徑或者名稱問題) IndentationError:縮進錯誤 IndexError:超出邊界,l[1000] KeyError:訪問字典中不存在的鍵 KeyboardInterr:CTRL+C被按 SyntaxError:非法的python代碼 TypeError:傳入對象類型與要求不符合 UnboundLocalError:訪問一個未被設置的局部變量,基本上是由於存在一個同名的局部變量ValueError:傳入一個調用者不指望的值,無效的參數 OSError:操做系統錯誤 ZeroDIvisionError:除零 WindowsError:系統調用失敗 UnicodeError Unicode:相關的錯誤 UnicodeDecodeError Unicode:解碼錯誤 UnicodeEncodeError Unicode:編碼錯誤 UnicodeTranslateError Unicode:轉換時錯誤 SystemError:通常的解釋器系統錯誤

異常處理:(提供異常處理機制來加強代碼的健壯性與容錯性)code

python解釋器檢測到錯誤,觸發異常,也容許程序員本身觸發異常,程序員本身編寫代碼,捕獲異常,若是捕獲異常,則跳轉執行相應的處理異常代碼的程序,使程序不會崩掉,這是異常處理。對象

異常是由程序的錯誤引發的,語法上的錯誤和異常處理無關,須要在程序運行前處理好。blog

異常處理:程序出錯前的異常處理 程序出錯後的處理異常繼承

 if判斷異常處理:

  只能針對一段代碼,對於不一樣代碼相同的異常類型須要寫大量重複的if判斷來處理,

  而這些代碼都與程序自己無關,令人感受可讀性差

try...except異常處理:

*****************萬能異常類*******

except Excetion as e: print(e) ******************多分支************* s1='hahaha'
try: int(s1) except IndexError as e: print(e) except ValueError as e: print(e) except KeyError as e: print(e) ************多分支後加Exception************* s1='hahaha'
try: int(s1) except IndexError as e: print(e) except ValueError as e: print(e) except Exception as e: print(e)
try...except + else:
  若是代碼塊無異常,則執行else代碼塊
  若是代碼塊有異常,則else代碼塊不執行
try...except + finally:
  無論代碼塊有沒有異常,finally代碼塊都會被執行
finally代碼塊一般是作清理工做的
*************主動觸發的異常******
try: raise TypeError('類型錯誤') except Exception as e: print(e) ************本身定義的異常*******
class AnnException(BaseException):#本身定義的異常一般都要繼承BaseException
    def __init__(self,.mes): self.mes=mes
   def __str__(self):
    return self.mes
try:
  raise AnnException('類型錯誤')
except AnnException as e:
  print(e)
**************斷言*********** def test(): res=1 return 1 r=test() assert r=1#根據r的值對下面代碼進行處理

 try...except的好處:

  1:把錯誤代碼和工做代碼分開

  2:代碼易組織,更清晰,複雜工做易實現

  3:相對安全,程序不容易崩潰

相關文章
相關標籤/搜索