異常發(fā)生在程序執(zhí)行的過程中,如果python無(wú)法正常處理程序就會(huì)發(fā)生異常,導(dǎo)致整個(gè)程序終止執(zhí)行,python中使用try/except語(yǔ)句可以捕獲異常。
try/except
異常的種類有很多,在不確定可能發(fā)生的異常類型時(shí)可以使用Exception捕獲所有異常:
try/except/else
在try語(yǔ)句后也可以跟一個(gè)else語(yǔ)句,這樣當(dāng)try語(yǔ)句塊正常執(zhí)行沒有發(fā)生異常,則將執(zhí)行else語(yǔ)句后的內(nèi)容:
try/Except/finally
在try語(yǔ)句后邊跟一個(gè)finally語(yǔ)句,則不管try語(yǔ)句塊有沒有發(fā)生異常,都會(huì)在執(zhí)行try之后執(zhí)行finally語(yǔ)句后的內(nèi)容:
raise拋出異常
使用raise來(lái)拋出一個(gè)異常:
raise Exception("a must not be zero")
最好指出異常的具體類型,如:
raise ZeroDivisionError("a must not be zero")
python異常列表:
異常名稱 |
描述 |
---|
BaseException |
所有異常的基類 |
SystemExit |
解釋器請(qǐng)求退出 |
KeyboardInterrupt |
用戶中斷執(zhí)行(通常是輸入^C) |
Exception |
常規(guī)錯(cuò)誤的基類 |
StopIteration |
迭代器沒有更多的值 |
GeneratorExit |
生成器(generator)發(fā)生異常來(lái)通知退出 |
StandardError |
所有的內(nèi)建標(biāo)準(zhǔn)異常的基類 |
ArithmeticError |
所有數(shù)值計(jì)算錯(cuò)誤的基類 |
FloatingPointError |
浮點(diǎn)計(jì)算錯(cuò)誤 |
OverflowError |
數(shù)值運(yùn)算超出最大限制 |
ZeroDivisionError |
除(或取模)零 (所有數(shù)據(jù)類型) |
AssertionError |
斷言語(yǔ)句失敗 |
AttributeError |
對(duì)象沒有這個(gè)屬性 |
EOFError |
沒有內(nèi)建輸入,到達(dá)EOF 標(biāo)記 |
EnvironmentError |
操作系統(tǒng)錯(cuò)誤的基類 |
IOError |
輸入/輸出操作失敗 |
OSError |
操作系統(tǒng)錯(cuò)誤 |
WindowsError |
系統(tǒng)調(diào)用失敗 |
ImportError |
導(dǎo)入模塊/對(duì)象失敗 |
LookupError |
無(wú)效數(shù)據(jù)查詢的基類 |
IndexError |
序列中沒有此索引(index) |
KeyError |
映射中沒有這個(gè)鍵 |
MemoryError |
內(nèi)存溢出錯(cuò)誤(對(duì)于Python 解釋器不是致命的) |
NameError |
未聲明/初始化對(duì)象 (沒有屬性) |
UnboundLocalError |
訪問未初始化的本地變量 |
ReferenceError |
弱引用(Weak reference)試圖訪問已經(jīng)垃圾回收了的對(duì)象 |
RuntimeError |
一般的運(yùn)行時(shí)錯(cuò)誤 |
NotImplementedError |
尚未實(shí)現(xiàn)的方法 |
SyntaxError |
Python 語(yǔ)法錯(cuò)誤 |
IndentationError |
縮進(jìn)錯(cuò)誤 |
TabError |
Tab 和空格混用 |
SystemError |
一般的解釋器系統(tǒng)錯(cuò)誤 |
TypeError |
對(duì)類型無(wú)效的操作 |
ValueError |
傳入無(wú)效的參數(shù) |
UnicodeError |
Unicode 相關(guān)的錯(cuò)誤 |
UnicodeDecodeError |
Unicode 解碼時(shí)的錯(cuò)誤 |
UnicodeEncodeError |
Unicode 編碼時(shí)錯(cuò)誤 |
UnicodeTranslateError |
Unicode 轉(zhuǎn)換時(shí)錯(cuò)誤 |
Warning |
警告的基類 |
DeprecationWarning |
關(guān)于被棄用的特征的警告 |
FutureWarning |
關(guān)于構(gòu)造將來(lái)語(yǔ)義會(huì)有改變的警告 |
OverflowWarning |
舊的關(guān)于自動(dòng)提升為長(zhǎng)整型(long)的警告 |
PendingDeprecationWarning |
關(guān)于特性將會(huì)被廢棄的警告 |
RuntimeWarning |
可疑的運(yùn)行時(shí)行為(runtime behavior)的警告 |
SyntaxWarning |
可疑的語(yǔ)法的警告 |
UserWarning |
用戶代碼生成的警告 |
公元前我們太小
公元后我們又太老
沒有誰(shuí)見過
那一次真正美麗的微笑
但我還是舉手敲門
帶來(lái)的象形文字
撒落一地
|