2012.3.16
exceptions
模塊提供了標準異常的層次結構. Python 啓動的時候會自動導入這個模塊, 而且將它加入到 _ _builtin_ _
模塊中. 也就是說, 通常不須要手動導入這個模塊. 函數
在 1.5.2 版本時它是一個普通模塊, 2.0 以及之後版本成爲內建模塊. ui
該模塊定義瞭如下標準異常:code
- Exception 是全部異常的基類. 強烈建議(但不是必須)自定義的異常異常也繼承這個類.
- SystemExit(Exception) 由
sys.exit
函數引起. 若是它在最頂層沒有被 try-except
語句捕獲, 那麼解釋器將直接關閉而不會顯示任何跟蹤返回信息.
- StandardError(Exception) 是全部內建異常的基類(除 SystemExit 外).
- KeyboardInterrupt(StandardError) 在用戶按下 Control-C(或其餘打斷按鍵)後 被引起. 若是它可能會在你使用 "捕獲全部" 的
try-except
語句時致使奇怪的問題.
- ImportError(StandardError) 在 Python 導入模塊失敗時被引起.
- EnvironmentError 做爲全部解釋器環境引起異常的基類. (也就是說, 這些異常通常不是因爲程序 bug 引發).
- IOError(EnvironmentError) 用於標記 I/O 相關錯誤.
- OSError(EnvironmentError) 用於標記
os
模塊引發的錯誤.
- WindowsError(OSError) 用於標記
os
模塊中 Windows 相關錯誤.
- NameError(StandardError) 在 Python 查找全局或局部名稱失敗時被引起.
- UnboundLocalError(NameError) , 當一個局部變量尚未賦值就被使用時, 會引起這個異常. 這個異常只有在2.0及以後的版本有; 早期版本只會引起一個普通的 NameError .
- AttributeError(StandardError) , 當 Python 尋找(或賦值)給一個實例屬性, 方法, 模塊功能或其它有效的命名失敗時, 會引起這個異常.
- SyntaxError(StandardError) , 當解釋器在編譯時遇到語法錯誤, 這個異常就被引起.
- (2.0 及之後版本) IndentationError(SyntaxError) 在遇到非法的縮進時被引起. 該異常只用於 2.0 及之後版本, 以前版本會引起一個 SyntaxError 異常.
- (2.0 及之後版本) TabError(IndentationError) , 當使用
-tt
選項檢查不一致縮進時有可能被引起. 該異常只用於 2.0 及之後版本, 以前版本會引起一個 SyntaxError 異常.
- TypeError(StandardError) , 當給定類型的對象不支持一個操做時被引起.
- AssertionError(StandardError) 在
assert
語句失敗時被引起(即表達式爲 false 時).
- LookupError(StandardError) 做爲序列或字典沒有包含給定索引或鍵時所引起異常的基類.
- IndexError(LookupError) , 當序列對象使用給定索引數索引失敗時(不存在索引對應對象)引起該異常.
- KeyError(LookupError) 當字典對象使用給定索引索引失敗時(不存在索引對應對象)引起該異常.
- ArithmeticError(StandardError) 做爲數學計算相關異常的基類.
- OverflowError(ArithmeticError) 在操做溢出時被引起(例如當一個整數太大, 致使不能符合給定類型).
- ZeroDivisionError(ArithmeticError) , 當你嘗試用 0 除某個數時被引起.
- FloatingPointError(ArithmeticError) , 當浮點數操做失敗時被引起.
- ValueError(StandardError) , 當一個參數類型正確但值不合法時被引起.
- (2.0 及之後版本) UnicodeError(ValueError) , Unicode 字符串類型相關異常. 只使用在 2.0 及之後版本.
- RuntimeError(StandardError) , 當出現運行時問題時引起, 包括在限制模式下嘗試訪問外部內容, 未知的硬件問題等等.
- NotImplementedError(RuntimeError) , 用於標記未實現的函數, 或無效的方法.
- SystemError(StandardError) , 解釋器內部錯誤. 該異常值會包含更多的細節 (常常會是一些深層次的東西, 好比 "
eval_code2: NULL globals" )
. 這本書的做者編了 5 年程序都沒見過這個錯誤. (想必是沒有用 raise SystemError
).
- MemoryError(StandardError) , 當解釋器耗盡內存時會引起該異常. 注意只有在底層內存分配抱怨時這個異常纔會發生; 若是是在你的舊機器上, 這個異常發生以前系統會陷入混亂的內存交換中.