您好,登錄后才能下訂單哦!
這篇文章主要介紹了python程序出錯(cuò)的處理方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
在程序運(yùn)行的過程中,如果發(fā)生了錯(cuò)誤,可以事先約定返回一個(gè)錯(cuò)誤代碼,這樣,就可以知道是否有錯(cuò),以及出錯(cuò)的原因。在操作系統(tǒng)提供的調(diào)用中,返回錯(cuò)誤碼非常常見。比如打開文件的函數(shù)open(),成功時(shí)返回文件描述符(就是一個(gè)整數(shù)),出錯(cuò)時(shí)返回-1。
用錯(cuò)誤碼來表示是否出錯(cuò)十分不便,因?yàn)楹瘮?shù)本身應(yīng)該返回的正常結(jié)果和錯(cuò)誤碼混在一起,造成調(diào)用者必須用大量的代碼來判斷是否出錯(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í)語言通常都內(nèi)置了一套try...except...finally...的錯(cuò)誤處理機(jī)制,Python也不例外。
try
讓我們用一個(gè)例子來看看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來運(yùn)行這段代碼,如果執(zhí)行出錯(cuò),則后續(xù)代碼不會(huì)繼續(xù)執(zhí)行,而是直接跳轉(zhuǎn)至錯(cuò)誤處理代碼,即except語句塊,執(zhí)行完except后,如果有finally語句塊,則執(zhí)行finally語句塊,至此,執(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ù)語句print('result:', r)不會(huì)被執(zhí)行,except由于捕獲到ZeroDivisionError,因此被執(zhí)行。最后,finally語句被執(zhí)行。然后,程序繼續(xù)按照流程往下走。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享python程序出錯(cuò)的處理方法內(nèi)容對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。