錯誤與異常
1、區分錯誤與異常
兩種錯誤(都必須改正):語法錯誤(代碼不規范,格式不對或缺少符號)、邏輯錯誤(邏輯不通)
異常:程序運行時發生錯誤的信號
2、異常處理與注意事項
異常處理:程序員特意去捕捉異常,如果捕捉成功,就進入另外一段你定義的邏輯里去運行,使程序不會崩潰
注意:異常處理的邏輯應該是與程序的主邏輯的分離開的;根本不會有人去用運行到一半就崩潰的軟件,所以我們必須提供一種異常處理機制來增強我們程序的健壯性和容錯性
各種異常
1、常見異常
AttributeError試圖訪問一個對象沒有的屬性,比如test.a,但是test沒有屬性a
IOError輸入/輸出異常;基本上就是無法打開文件
ImportError無法引入模塊或包;基本上就是路徑問題或名稱錯誤
IndentationError語法錯誤(的子類) ;代碼沒有正確縮進或對齊
IndexError下標索引超出序列邊界,比如當a只有三個元素,卻試圖訪問a[5]
KeyError鍵異常,試圖訪問字典里不存在的鍵
KeyboardInterruptCtrl+C被按下
NameError使用一個還未被賦予對象的變量
SyntaxErrorPython代碼非法,代碼不能編譯(基本上就是語法錯誤)
TypeError傳入對象類型與要求的不符合
UnboundLocalError試圖訪問一個還未被設置的局部變量,基本上是由於另有一個同名的全局變量,導致你以為正在訪問它
ValueError值異常,傳入一個調用者不期望的值,即使值的類型是正確的
2、其他異常
ArithmeticError AssertionError AttributeError BaseException BufferError BytesWarning DeprecationWarning EnvironmentError EOFError Exception FloatingPointError FutureWarning GeneratorExit ImportError ImportWarning IndentationError IndexError IOError KeyboardInterrupt KeyError LookupError MemoryError NameError NotImplementedError OSError OverflowError PendingDeprecationWarning ReferenceError RuntimeError RuntimeWarning StandardError StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TypeError UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateError UnicodeWarning UserWarning ValueError Warning ZeroDivisionError
這些異常都比較少見,所以也沒有必要全部列出來是哪方面的異常,太多了也記不住,所以可以遇到再去搜索這些少見的異常的解決方案
異常處理
1、if判斷式
運行結果:
if判斷式的缺點:
只能針對某一段代碼,對於不同的代碼段的相同錯誤類型需需要寫重復的if來進行處理,顯得非常贅余,可讀性極其差
2、try … except …異常處理
運行結果:
3、主動異常
運行結果:
4、斷言
運行結果:
此文轉載文,著作權歸作者所有,如有侵權聯系小編刪除!
原文地址:https://www.tuicool.com/articles/uuE32ub
需要源代碼或者想了解更多的(點擊這里查看)