創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營(yíng)理念,通過(guò)多達(dá)10多年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)整合營(yíng)銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:白烏魚等企業(yè),備受客戶表?yè)P(yáng)。這篇文章主要介紹了python程序出錯(cuò)的處理方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
在程序運(yùn)行的過(guò)程中,如果發(fā)生了錯(cuò)誤,可以事先約定返回一個(gè)錯(cuò)誤代碼,這樣,就可以知道是否有錯(cuò),以及出錯(cuò)的原因。在操作系統(tǒng)提供的調(diào)用中,返回錯(cuò)誤碼非常常見。比如打開文件的函數(shù)open(),成功時(shí)返回文件描述符(就是一個(gè)整數(shù)),出錯(cuò)時(shí)返回-1。
用錯(cuò)誤碼來(lái)表示是否出錯(cuò)十分不便,因?yàn)楹瘮?shù)本身應(yīng)該返回的正常結(jié)果和錯(cuò)誤碼混在一起,造成調(diào)用者必須用大量的代碼來(lái)判斷是否出錯(cuò):
def foo(): r = some_function() if r==(-1): return (-1) # do something return r def bar(): r = foo() if r==(-1): print('Error') else: pass
一旦出錯(cuò),還要一級(jí)一級(jí)上報(bào),直到某個(gè)函數(shù)可以處理該錯(cuò)誤(比如,給用戶輸出一個(gè)錯(cuò)誤信息)。
所以高級(jí)語(yǔ)言通常都內(nèi)置了一套try...except...finally...的錯(cuò)誤處理機(jī)制,Python也不例外。
try
讓我們用一個(gè)例子來(lái)看看try的機(jī)制:
try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionError as e: print('except:', e) finally: print('finally...') print('END')
當(dāng)我們認(rèn)為某些代碼可能會(huì)出錯(cuò)時(shí),就可以用try來(lái)運(yùn)行這段代碼,如果執(zhí)行出錯(cuò),則后續(xù)代碼不會(huì)繼續(xù)執(zhí)行,而是直接跳轉(zhuǎn)至錯(cuò)誤處理代碼,即except語(yǔ)句塊,執(zhí)行完except后,如果有finally語(yǔ)句塊,則執(zhí)行finally語(yǔ)句塊,至此,執(zhí)行完畢。
上面的代碼在計(jì)算10 / 0時(shí)會(huì)產(chǎn)生一個(gè)除法運(yùn)算錯(cuò)誤:
try... except: division by zero finally... END
從輸出可以看到,當(dāng)錯(cuò)誤發(fā)生時(shí),后續(xù)語(yǔ)句print('result:', r)不會(huì)被執(zhí)行,except由于捕獲到ZeroDivisionError,因此被執(zhí)行。最后,finally語(yǔ)句被執(zhí)行。然后,程序繼續(xù)按照流程往下走。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python程序出錯(cuò)的處理方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!