Python異常處理python
異常拋出機制,爲程序開發人員提供了一種在運行時發現錯誤,進行回覆處理,而後繼續執行的能力數據庫
#!/usr/bin/pythonide
try:函數
open('abc.txt')spa
except IOError,msg:對象
pass索引
拋出機制:開發
若是在運行時發生異常的話,解釋器會查找相應的處理語句(稱爲handler)it
要是在當前函數力沒有找到的話,它會將異常傳遞給上層的調用函數,看看那裏能不能處理io
若是在最外層(全局「main「)仍是沒有找到的話,解釋器就會退出,同時打印出traceback以便讓用戶找出錯誤產生的緣由
try finally字句用來表述這樣的狀況:咱們不關心捕抓到是什麼錯誤,不管錯誤是否是發生,這些代碼「必須」運行,好比文件關閉,釋放鎖,把數據庫連接返還給鏈接池
好比:
try:
f = open('unifle.py','r')
except Exception,e:
print False,str(e)
finally:
print "exec finally"
拋出異常:raise
if 'a' > 5:
raise TypeError("Error:'a' must be integer")
常見的python異常:
AssertionError # assert語句失敗
AttributeError # 試圖讓問一個對象沒有的屬性
IOError # 輸入輸出異常,基本是沒法打開文件
ImportError # 沒法引入模塊或者包,基本是路徑問題
IndentationError # 語法錯誤,代碼沒有正確的對齊
IndexError # 下標索引超出序列邊界
KeyError # 試圖訪問你字典力不存在的鍵
KeyboardInterrupt # Ctrl+c被按下
NameError # 使用一個還沒賦予對象的變量
SyntaxError # Python代碼邏輯語法出錯,不能執行
TypeError # 傳入的對象類型與要求不符
UnboundLocalError # 試圖訪問一個還未設置的全局變量,基本上是因爲另有一個同名的全局變量,致使你覺得在訪問
ValueError # 傳入一個不被指望的值,即便類型正確