這篇文章主要介紹python報(bào)錯誤的解決方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十載累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的營銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:銅雕雕塑等企業(yè),備受客戶好評。
在編寫Python代碼或開發(fā)實(shí)際應(yīng)用的項(xiàng)目時,程序報(bào)出異?;蝈e誤是在所難免的,那么我們應(yīng)該怎樣處理這些異常呢?下面來說一下方法。
1.使用try...except捕捉異常
try: s=1/0 except IndexError: print ('except') except KeyError: print ('Keyerror') except ZeroDivisionError: print ('ZeroDivisionError')
或
try: s=1/0 except: print ('出現(xiàn)異常') 或有多個異常名稱的格式 try: s = 1/0 except(IndexError,KeyError,ZeroDivisionError),e: print (e)
2.使用try ...except...else語句捕捉異常
當(dāng)try塊中的代碼沒有異常時,則跳過except塊中的代碼,執(zhí)行else塊中的代碼
工作原理:
1).如果try代碼塊語句執(zhí)行發(fā)生異常,Python就跳回try,執(zhí)行第一個匹配該異常的except塊中的代碼
2).如果異常發(fā)生在try代碼塊內(nèi),沒有匹配的except子句,name異常就會向上傳遞到程序中之前進(jìn)入的try中,或者轉(zhuǎn)到這個進(jìn)程的頂層(這會使python終止當(dāng)前程序并打印默認(rèn)的錯誤消息)
3).如果try塊中的代碼執(zhí)行沒有異常發(fā)生,則python將執(zhí)行else塊中的代碼
3.使用try...finally捕捉異常
當(dāng)try塊中包含了finally語句,則python一定會在執(zhí)行完try塊中的代碼之后在執(zhí)行finally塊中的代碼(無論try塊中的代碼是否發(fā)生異常都將執(zhí)行finally塊中的代碼)
工作原理:
1).如果執(zhí)行try塊中的代碼時沒有發(fā)生異常,則Python會跳轉(zhuǎn)至finally語句并執(zhí)行該代碼塊,然后繼續(xù)執(zhí)行程序中finally語句之后的代碼
2).如果執(zhí)行try塊中的代碼時發(fā)生異常,則Python依然會執(zhí)行finally語句中的代碼塊,但是接著會將異常向上傳遞到上層的try語句或頂層的默認(rèn)處理器,程序不會繼續(xù)執(zhí)行導(dǎo)致發(fā)生異常的語句之后的try塊中的代碼。也就是說,即使發(fā)生了異常,finally代碼塊還是會被執(zhí)行,和except不同的是,finally不會終止異常,而是在finally代碼塊執(zhí)行后,一直處于發(fā)生狀態(tài)
4.使用raise拋出異常(手工引發(fā)異常)
raise<異常對象>
‘異常對象’表示將引發(fā)異常的異常名稱,且異常名稱標(biāo)識了具體的異常類。raise語句還可指定對異常對象進(jìn)行初始化的參數(shù),為此需要在異常類的名稱后添加一個逗號以及指定參數(shù)(或者由參數(shù)構(gòu)成的一個元組 )。一旦執(zhí)行了raise語句,raise語句后的代碼將不能被執(zhí)行
raise<異常對象>,<異常信息標(biāo)識>
例子:
try: raise NameError except NameError: print ('拋出一個異常')
5.自定義異常
格式class MyError(Exception):
def __init__(self,value): self.value=value def __str__(self): return repr(self.value) try: raise MyError(2*2) except MyError as e: print('My exceotion occurred,value:',e.value)
6.使用assert語句
用于檢測某個條件表達(dá)式是否為真。又稱斷言語句,即assert認(rèn)為檢測的表達(dá)式永遠(yuǎn)為真,斷言失敗就會引發(fā)AssertionError異常
語法格式:assert<條件判斷表達(dá)式>
username = 'admin' password='123456' assert username =='admin' and password == 'admin','密碼錯誤!'
以上是python報(bào)錯誤的解決方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!