自學(xué)Python編程【第三十四節(jié)】異常處理
歡迎大家來到自學(xué)Python編程教室,上邊兩講我們學(xué)習(xí)了Python編程中的break(強(qiáng)制退出)和continue(中斷本次循環(huán),進(jìn)入下次循環(huán)),你還記得嗎?這一講,我們學(xué)習(xí)異常處理的相關(guān)內(nèi)容,相信大家都有碰到過異常束手無策的時(shí)候,看看今天是否可以給你些新的思路新的解決辦法吧:

在程序運(yùn)行時(shí),如果我們的代碼引發(fā)了錯(cuò)誤,Python就會(huì)中斷程序,并且輸出錯(cuò)誤提示。
比如我們寫了一句:
print int('0.5')
運(yùn)行后程序得到錯(cuò)誤提示:
Traceback (most recent call last):
File "C:/Python27/test.py", line 1, in <module>
print int('0.5')
ValueError: invalid literal for int() with base 10: '0.5'
意思是,在test.py這個(gè)文件,第1行,print int('0.5')這里,你拿了一個(gè)不是10進(jìn)制能夠表示的字符,我沒法把它轉(zhuǎn)成int值。
上面的錯(cuò)誤可以避免,但在實(shí)際的應(yīng)用中,有很多錯(cuò)誤是開發(fā)者無法控制的,例如用戶輸入了一個(gè)不合規(guī)定的值,或者需要打開的文件不存在。這些情況被稱作“異?!?,一個(gè)好的程序需要能處理可能發(fā)生的異常,避免程序因此而中斷。
例如我們?nèi)ゴ蜷_一個(gè)文件:
f = file('non-exist.txt')
print 'File opened!'
f.close()
假如這個(gè)文件因?yàn)槟撤N原因并沒有出現(xiàn)在應(yīng)該出現(xiàn)的文件夾里,程序就會(huì)報(bào)錯(cuò):
IOError: [Errno 2] No such file or directory: 'non-exist.txt'
程序在出錯(cuò)處中斷,后面的print不會(huì)被執(zhí)行。
在Python中,可以使用try...except語(yǔ)句來處理異常。做法是,把可能引發(fā)異常的語(yǔ)句放在try-塊中,把處理異常的語(yǔ)句放在except-塊中。
把剛才那段代碼放入try...except中:
try:
f = file('non-exist.txt')
print 'File opened!'
f.close()
except:
print 'File not exists.'
print 'Done'
當(dāng)程序在try內(nèi)部打開文件引發(fā)異常時(shí),會(huì)跳過try中剩下的代碼,直接跳轉(zhuǎn)到except中的語(yǔ)句處理異常。于是輸出了“File not exists.”。如果文件被順利打開,則會(huì)輸出“File opened!”,而不會(huì)去執(zhí)行except中的語(yǔ)句。
但無論如何,整個(gè)程序不會(huì)中斷,最后的“Done”都會(huì)被輸出。
在try...except語(yǔ)句中,try中引發(fā)的異常就像是扔出了一只飛盤,而except就是一只靈敏的狗,總能準(zhǔn)確地接住飛盤。
恭喜您在Python自學(xué)的道路上又堅(jiān)持了一天,今天所講的異常處理,你學(xué)會(huì)了嗎?
好啦,今天的分享到這里就結(jié)束了,希望大家能夠持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享!
聲明:文章來源于網(wǎng)絡(luò),侵刪!