錯誤與例外
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
需要源代碼或者想了解更多的(點擊這里查看)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/142635.html
標籤:Python
