1.錯(cuò)誤
從軟件方面來說,錯(cuò)誤是語法或是邏輯上的。語法錯(cuò)誤指示軟件的結(jié)構(gòu)上有錯(cuò)誤,導(dǎo)致不能被解釋器解釋或編譯器無法編譯。這些錯(cuò)誤必須在程序執(zhí)行前糾正。當(dāng)程序的語法正確后,剩下的就是邏輯錯(cuò)誤了。邏輯錯(cuò)誤可能是由于不完整或是不合法的輸入所致;在其他情況下,還可能是邏輯無法生成,計(jì)算,或是輸出結(jié)果需要的過程無法執(zhí)行。這些錯(cuò)誤通常分別被稱為域錯(cuò)誤和范圍錯(cuò)誤。
當(dāng)Python檢測到一個(gè)錯(cuò)誤時(shí),解釋器就會(huì)指出當(dāng)前流已經(jīng)無法繼續(xù)執(zhí)行下去,這時(shí)候就出現(xiàn)了異常。
2.異常
對異常的最好描述是:它是因?yàn)槌绦虺霈F(xiàn)了錯(cuò)誤而在正??刂屏饕酝獠扇〉男袨?。這個(gè)行為又分為兩個(gè)階段:首先是引起異常發(fā)生的錯(cuò)誤,然后是檢測(和采取可能的措施)階段。
第一個(gè)階段是在發(fā)生了一個(gè)異常條件(有時(shí)候也叫做例外的條件)后發(fā)生的。只要檢測到錯(cuò)誤并且意識到異常條件,解釋器會(huì)引發(fā)一個(gè)異常。引發(fā)也可以叫做觸發(fā)或者生成,解釋器通過它通知當(dāng)前控制流有錯(cuò)誤發(fā)生。
Python也允許程序員自己引發(fā)異常,無論是Python解釋器還是程序員引發(fā)的,異常就是錯(cuò)誤發(fā)生的信號,當(dāng)前流將被打斷,用來處理這個(gè)錯(cuò)誤并采取相應(yīng)的操作,這就是第二階段。
對異常的處理發(fā)生在第二階段。異常引發(fā)后,可以調(diào)用很多不同的操作,可以是忽略錯(cuò)誤(記錄錯(cuò)誤但不采取任何措施,采取補(bǔ)救措施后終止程序),或是減輕問題的影響后設(shè)法繼續(xù)執(zhí)行程序。所有的這些操作都代表一種繼續(xù),或是控制的分支,關(guān)鍵是程序員在錯(cuò)誤發(fā)生時(shí)可以指示程序如何執(zhí)行。
類似Python這樣支持引發(fā)和處理異常(這更重要)的語言,可以讓開發(fā)人員可以在錯(cuò)誤發(fā)生時(shí)更直接地控制它們。程序員不僅僅有了檢測錯(cuò)誤的能力,還可以在它們發(fā)生時(shí)采取更可靠的補(bǔ)救措施。
常見錯(cuò)誤:ipython下
1.a:NameError
在沒有定義一個(gè)變量的時(shí)候直接引用
2.ifTrue:SyntaxError
語法錯(cuò)誤
3.f=open('1.txt'):IOError
試圖打開一個(gè)不存在的文件的時(shí)候
4.10/0:ZeroDivisionError
5.a=int('dd'):ValueError
進(jìn)行強(qiáng)制類型轉(zhuǎn)換的時(shí)候遇到的錯(cuò)誤
try-except:異常處理
try:
try_suite
exceptException[,e]:
exception_block
以上內(nèi)容為大家介紹了python培訓(xùn)之異常和錯(cuò)誤有什么區(qū)別,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。