attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x
ioerror 輸入/輸出異常;基本上是無法開啟檔案
importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類) ;**沒有正確對齊
indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,
導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
為了保證程式的健壯性與容錯性,即在遇到錯誤時程式不會崩潰,我們需要對異常進行處理,
如果錯誤發生的條件是可預知的,我們需要用if進行處理:在錯誤發生之前進行預防
如果錯誤發生的條件是不可預知的,則需要用到try...except:在錯誤發生之後進行處理
例:
def safe_float(obj):try:
retval=float(obj)
except (valueerror,typeerror) as e:
retval=str(e)
return retval
def main():
log=open('cardlog.txt','w')
try:
ccfile=open('carddata','r')
except ioerror as e:
log.write('no txns this month\n')
log.close()
return
txns=ccfile.readlines()
ccfile.close()
total=0.0
log.write('account log:\n')
for eachtxn in txns:
result=safe_float(eachtxn)
if isinstance(result,float):
total+=result
log.write('data...processed\n')
else:
log.write('ignored: %s'%result)
print('$%.2f(new blance)'%(total))
log.close()
if __name__=='__main__':
main()
python學習之異常
多個execpt捕獲異常 try x input enter the first number y input enter the second number print int x int y except zerodivisionerror print the second number can...
Python學習之異常處理
具體 詳見 異常即是乙個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。一般情況下,在python無法正常處理程式時就會發生乙個異常。異常是python物件,表示乙個錯誤。當python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。捕捉異常可以使用try except語句。try...
python學習之異常處理
語法錯誤 因語法沒有通過python直譯器於法檢測 邏輯錯誤 有時不能避免 異常就是python程式執行時因發生錯誤而終止。在python的異常報錯資訊中包含 錯誤資訊追蹤資訊 錯誤型別 錯誤值 常見異常attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ...