新聞中心
在程序運行的過程中,如果發(fā)生了錯誤,可以事先約定返回一個錯誤代碼,這樣,就可以知道是否有錯,以及出錯的原因。在操作系統(tǒng)提供的調(diào)用中,返回錯誤碼非常常見。比如打開文件的函數(shù)open(),成功時返回文件描述符(就是一個整數(shù)),出錯時返回-1。

創(chuàng)新互聯(lián)建站服務(wù)項目包括贛州網(wǎng)站建設(shè)、贛州網(wǎng)站制作、贛州網(wǎng)頁制作以及贛州網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,贛州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到贛州省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
用錯誤碼來表示是否出錯十分不便,因為函數(shù)本身應(yīng)該返回的正常結(jié)果和錯誤碼混在一起,造成調(diào)用者必須用大量的代碼來判斷是否出錯:
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一旦出錯,還要一級一級上報,直到某個函數(shù)可以處理該錯誤(比如,給用戶輸出一個錯誤信息)。
所以高級語言通常都內(nèi)置了一套try...except...finally...的錯誤處理機制,Python也不例外。
try
讓我們用一個例子來看看try的機制:
try:
print('try...')
r = 10 / 0
print('result:', r)
except ZeroDivisionError as e:
print('except:', e)
finally:
print('finally...')
print('END')當(dāng)我們認為某些代碼可能會出錯時,就可以用try來運行這段代碼,如果執(zhí)行出錯,則后續(xù)代碼不會繼續(xù)執(zhí)行,而是直接跳轉(zhuǎn)至錯誤處理代碼,即except語句塊,執(zhí)行完except后,如果有finally語句塊,則執(zhí)行finally語句塊,至此,執(zhí)行完畢。
上面的代碼在計算10 / 0時會產(chǎn)生一個除法運算錯誤:
try... except: division by zero finally... END
從輸出可以看到,當(dāng)錯誤發(fā)生時,后續(xù)語句print('result:', r)不會被執(zhí)行,except由于捕獲到ZeroDivisionError,因此被執(zhí)行。最后,finally語句被執(zhí)行。然后,程序繼續(xù)按照流程往下走。更多學(xué)習(xí)內(nèi)容,請點擊Python學(xué)習(xí)網(wǎng)。
標(biāo)題名稱:創(chuàng)新互聯(lián)Python教程:python程序出錯怎么處理
轉(zhuǎn)載來于:http://m.5511xx.com/article/ccdhhoe.html


咨詢
建站咨詢
