python中的異常是指程序中的例外,違例,影響程序正常執(zhí)行的情況。
異常機(jī)制是指程序出現(xiàn)錯(cuò)誤后,程序的處理方法。
當(dāng)出現(xiàn)錯(cuò)誤后,程序的執(zhí)行流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理。
如果程序執(zhí)行過程中發(fā)生了異常,我們沒有進(jìn)行異常處理,那么程序就會中止執(zhí)行下面的代碼。但是如果我們進(jìn)行了異常處理,程序會繼續(xù)執(zhí)行下面的代碼。
異常的例子:
NameError:嘗試訪問一個(gè)未申明的變量
>>>foo
Traceback(innermostlast):File"",line1,in?
NameError:name'foo'isnotdefined
NameError表示我們訪問了一個(gè)沒有初始化的變量.在Python解釋器的符號表沒有找到那個(gè)另人討厭的變量.我們將在后面的兩章討論名稱空間,現(xiàn)在大家可以認(rèn)為它們是連接名字和對象的"地址簿"就可以了.任何可訪問的變量必須在名稱空間里列出.訪問變量需要由解釋器進(jìn)行搜索,如果請求的名字沒有在任何名稱空間里找到,那么將會生成一個(gè)NameError異常.
ZeroDivisionError:除數(shù)為零
>>>1/0
Traceback(innermostlast):File"",line1,in?
ZeroDivisionError:integerdivisionormodulobyzero
我們邊的例子使用的是整數(shù),但事實(shí)上,任何數(shù)值被零除都會導(dǎo)致一個(gè)ZeroDivisionError
異常.
SyntaxError:Python解釋器語法錯(cuò)誤
>>>for
File"",line1EditByVheavens
for
^
SyntaxError:invalidsyntax
SyntaxError異常是唯一不是在運(yùn)行時(shí)發(fā)生的異常.它代表Python代碼中有一個(gè)不正確的結(jié)構(gòu),在它改正之前程序無法執(zhí)行.這些錯(cuò)誤一般都是在編譯時(shí)發(fā)生,Python解釋器無法把你的腳本轉(zhuǎn)化為Python字節(jié)代碼.當(dāng)然這也可能是你導(dǎo)入一個(gè)有缺陷的模塊的時(shí)候.
IndexError:請求的索引超出序列范圍
>>>aList=[]
>>>aList[0]
Traceback(innermostlast):File"",line1,in?
IndexError:listindexoutofrange
IndexError在你嘗試使用一個(gè)超出范圍的值索引序列時(shí)引發(fā).
KeyError:請求一個(gè)不存在的字典關(guān)鍵字
>>>aDict={'host':'earth','port':80}
>>>printaDict['server']Traceback(innermostlast):
File"",line1,in?KeyError:server
映射對象,例如字典,是依靠關(guān)鍵字(keys)訪問數(shù)據(jù)值的.如果使用錯(cuò)誤的或是不存在的鍵請求字典就會引發(fā)一個(gè)KeyError異常.
IOError:輸入/輸出錯(cuò)誤
>>>f=open("blah")Traceback(innermostlast):
File"",line1,in?
IOError:[Errno2]Nosuchfileordirectory:'blah'
類似嘗試打開一個(gè)不存在的磁盤文件一類的操作會引發(fā)一個(gè)操作系統(tǒng)輸入/輸出(I/O)錯(cuò)誤.任何類型的I/O錯(cuò)誤都會引發(fā)IOError異常.
AttributeError:嘗試訪問未知的對象屬性
>>>classmyClass(object):
...pass
...
>>>myInst=myClass()
>>>myInst.bar='spam'
>>>myInst.bar
'spam'
>>>myInst.foo
Traceback(innermostlast):File"",line1,in?
AttributeError:foo
以上內(nèi)容為大家介紹了python的異常,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/