異常處理: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:相對安全,程序不容易崩潰