1. 程式人生 > >python的異常處理

python的異常處理

語法錯誤 interrupt 引用 eof 變量 參數 tee windows 必須

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的異常處理