異常總結
異常:就是不正常的情況,程序開發過程中錯誤和BUG都是補充正常的情況。
不正常的情況有自己寫錯代碼,導致程序運行不起來,或者進行某種操作的時候,不合適的數據引起程序崩潰,比如需要用戶輸入數字的時候,用戶輸入了字符串,在進行類型轉換的時候就會出現錯誤,導致程序崩潰。
異常發生的后果就是程序崩潰。處理異常,在運行的程序過程中,由于用戶的誤操作或者不合適的數據導致程序崩潰,讓代碼自己處理并保證程序的正常執行,而不至于因為錯誤導致程序的崩潰,提高代碼的健壯性!
處理異常(容錯):包容出現的不正常的錯誤,保證程序的正常運行。處理異常的方式有:try except:異常捕獲處理assertions:斷言處理
try:
可能出現異常的代碼
except:
一旦出現異常執行的代碼
else:
沒有異常執行的代碼
finally:
不論是否有異常都會執行的代碼
異常處理的步驟:讓錯誤充分的暴露出來
定位異常:定位錯誤出現的位置
處理異常:try包含,except處理
基本異常處理:try-except直接處理異?!究梢蕴幚砣魏萎惓?,不能定位具體是什么異?!縯ry-except(異常信息)【可以處理指定的異?!?/p>
常見的異常
所有異常的超類:BaseException
標準異常的超類:Exception(BaseException)
程序執行過程中經常看到的異常:
BaseException所有異常的基類
SystemExit解釋器請求退出
KeyboardInterrupt用戶中斷執行(通常是輸入^C)
Exception常規錯誤的基類
StopIteration迭代器沒有更多的值
GeneratorExit生成器(generator)發生異常來通知退出
StandardError所有的內建標準異常的基類
ArithmeticError所有數值計算錯誤的基類
FloatingPointError浮點計算錯誤
OverflowError數值運算超出最大限制
ZeroDivisionError除(或取模)零(所有數據類型)
AssertionError斷言語句失敗
AttributeError對象沒有這個屬性
EOFError沒有內建輸入,到達EOF標記
EnvironmentError操作系統錯誤的基類
IOError輸入/輸出操作失敗
OSError操作系統錯誤
WindowsError系統調用失敗
ImportError導入模塊/對象失敗
LookupError無效數據查詢的基類
IndexError序列中沒有此索引(index)
KeyError映射中沒有這個鍵
MemoryError內存溢出錯誤(對于Python解釋器不是致命的)
NameError未聲明/初始化對象(沒有屬性)
UnboundLocalError訪問未初始化的本地變量
ReferenceError弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError一般的運行時錯誤
NotImplementedError尚未實現的方法
SyntaxErrorPython語法錯誤
IndentationError縮進錯誤
TabErrorTab和空格混用
SystemError一般的解釋器系統錯誤
TypeError對類型無效的操作
ValueError傳入無效的參數
UnicodeErrorUnicode相關的錯誤
UnicodeDecodeErrorUnicode解碼時的錯誤
UnicodeEncodeErrorUnicode編碼時錯誤
UnicodeTranslateErrorUnicode轉換時錯誤
Warning警告的基類
DeprecationWarning關于被棄用的特征的警告
FutureWarning關于構造將來語義會有改變的警告
OverflowWarning舊的關于自動提升為長整型(long)的警告
PendingDeprecationWarning關于特性將會被廢棄的警告
RuntimeWarning可疑的運行時行為(runtime behavior)的警告
SyntaxWarning可疑的語法的警告UserWarning用戶代碼生成的警告
通常查看異常信息,就需要打印異常信息,將異常信息賦值給一個變量,打印該變量即可系統提供的異常信息--晦澀難懂 ??系統提供的異常信息--非常有限
我們可以自定義異常
異??梢钥闯梢粋€對象
自定義的異常可以看成類型
主動拋出異常,在開發過程中,主動地出現一種錯誤,將錯誤拋給程序,告訴程序在這里出錯,通過raise關鍵字來拋出異常
自定義異常,就是專門為了拋出異常,拋出錯誤,警告這里出現了問題