python的異常處理
try...except
有時候我們寫程序的時候,會出現一些錯誤或異常,導致程序終止。例如,做除法時,除法為0,會引發一個
ZeroDivisionError
a=10
b=0
try:
c=a/b
print c
except ZeroDivisionError ,e:
print e.message
print "done"
我們把可能發生錯誤的語句放在try模塊裏,用except來處理異常。except可以處理一個專門的異常,也可以處理一組圓括號中的異常,如果except後
沒有指定異常,則默認處理所有的異常。每一個try,都必須至少有一個except
處理一組異常可以這樣寫(其中e代表異常的實例):
try:
pass
except (IOError, ZeroDivisionError) ,e:
print e
try ......except....else 語句,當沒有異常發生時,else中的語句將會被執行。
例子:
a = 10
b = 0
try:
c = b/a/b
print c
except (IOError , ZeroDivisionError),x:
print x
else:
print ("no error")
print "done"
二、raise 引發一個異常
例子:如果輸入的數據不是整數,則引發一個ValueError
inputValue = input("please input a int data:")
if type(inputValue)!=type(1)
raise ValueError
else:
print (inputValue)
三、try。。。finally
無論異常是否發生,在程序結束前,finally中的語句都會被執行
a = 10
b =0
try:
print a/b
except:
print "error"
finally:
print "always excute"
四、自定義一個異常類
這個自定義
五、python所有的標準異常類:
異常名稱
描述
BaseException (所有異常的基類(父類))
SystemExit (解釋器請求退出)
KeyboardInterrupt (用戶中斷執行(通常是輸入^c))
Exception (常規錯誤的基類)
Stoplteration (叠代器沒有更多的值)
GeneratorExit (生成器(generator)發生異常來通知退出)
SystemExit (python解釋器請求退出)
StandardError (所有的內建標準異常的基類)
ArithemticError (所有數值計算錯誤的基類)
FloatingPointError (浮點計算錯誤)
OverflowError (數值運算超出最大限制)
ZeroDivisionError 除(或取模)零(所有數據類型)
AssertionError (斷言語句失敗)
AttributeError(對象沒有這個屬性)
EoFError (沒有內建輸入,到達EoF標記)
EnvironmentError (操作系統錯誤的基類)
IOError (輸入/輸出操作失敗)
OSError (操作系統錯誤)
windowsError (系統調用失敗)
ImportError (導入模塊/對象失敗)
LookupError (無效數據查詢的基類)
IndexError (序列中沒有此索引(index))
KeyError (映射中沒有這個建)
MemoryError (內存溢出錯誤(對於python解釋器不是致命的))
NameError (未聲明/初始化對象(沒有屬性))
UnboundLocalError (訪問未初始化的本地變量)
ReferenceError (弱引用(weak reference)試圖訪問已經垃圾回收了的對象)
RuntimeError (一般的運行時錯誤)
SyntaxError (python 語法錯誤)
TypeError (對類型無效的操作)
ValueError (傳入無效的參數)
SyntaxWarning (可疑的語法的警告)
python的異常處理