異常拋出機制,爲程序開發人員提供了一種在運行時發現錯誤,進行恢復處理,而後繼續執行的能力。下面是一個異常處理實例:python
try: f = open('unfile.py', 'r') except IOError, e: print False,str(e) False [Errno 2] No such file or directory: 'unfile.py'
python提供try-finally子句來表述這樣的狀況:咱們不關心捕捉到是什麼錯誤,不管錯誤是否是發生,這些代碼「必須」運行,好比文件關閉,釋放鎖,把數據庫鏈接還給鏈接池等。好比:數據庫
try: f = open('unfile.py', 'r') except Exception, e: print False,str(e) finally: print "exec finally"
使用raise來拋出一個異常:函數
if 'a' > 5: raise TypeError("Error: 'a' must be integer.")
異常 | 描述 |
---|---|
AssertionError | assert語句失敗 |
AttributeError | 試圖訪問一個對象沒有的屬性 |
IOError | 輸入輸出異常,基本是沒法打開文件 |
ImportError | 沒法引入模塊或者包,基本是路徑問題 |
IndentationError | 語法錯誤,代碼沒有正確的對齊 |
IndexError | 下標索引超出序列邊界 |
KeyError | 試圖訪問你字典裏不存在的鍵 |
KeyBoardInterrupt | Ctrl+C被按下 |
NameError | 使用一個還未賦予對象的變量 |
SyntaxError | python代碼邏輯語法出錯,不能執行 |
TypeError | 傳入的對象類型與要求不符 |
UnboundLocalError | 試圖訪問一個還未設置的全局變量,基本上是因爲另有一個同名的全局變量,致使你覺得在訪問 |
ValueError | 傳入一個不被指望的值,即便類型正確 |