Python運(yùn)行異常管理解決方案
1 前言
Python使用被稱為異常的特殊對象來管理程序執(zhí)行期間發(fā)生的錯(cuò)誤。每當(dāng)發(fā)生讓Python不知所措的錯(cuò)誤時(shí),它都會創(chuàng)建一個(gè)異常對象。
如果你編寫了處理該異常的代碼,程序?qū)⒗^續(xù)運(yùn)行;如果你未對異常進(jìn)行處理,程序?qū)⑼V?,并顯示一個(gè)traceback,其中包含有關(guān)異常的報(bào)告。
異常是使用try-except代碼塊處理的。try-except代碼塊讓Python執(zhí)行指定的操作,同時(shí)告訴Python發(fā)生異常時(shí)怎么辦。
使用了try-except代碼塊時(shí),即便出現(xiàn)異常,程序也將繼續(xù)運(yùn)行。
2 運(yùn)用try-except代碼塊
我們知道,除數(shù)是不能為0的,當(dāng)程序員誤將除數(shù)設(shè)置為0時(shí),將會出現(xiàn)ZeroDivisionError錯(cuò)誤。
實(shí)現(xiàn)代碼:
try:
print(6/0)
except ZeroDivisionError:
print("you can not divide by zero!")
運(yùn)行結(jié)果:
you can not divide by zero!
工作原理:
將可能出現(xiàn)錯(cuò)誤的代碼放在try代碼塊中,如果運(yùn)行無錯(cuò)誤,將跳過except代碼塊;若導(dǎo)致了錯(cuò)誤,Python將查找except代碼塊,并執(zhí)行其中的代碼。
這樣一來,當(dāng)運(yùn)行出錯(cuò)時(shí),用戶看到的便是一條友好的錯(cuò)誤信息。
若try-except后面還有其他代碼,那么程序?qū)⒔又\(yùn)行。
3 運(yùn)用try-except-else代碼塊
實(shí)現(xiàn)代碼:
print("Please input two numbers, and I will divide them.")
print("Enter 'q' to quit.")
while True:
first_num = input("\nFirst number: ")
if first_num == 'q':
break
second_num = input("Second number: ")
try:
answer = int(first_num) / int(second_num)
except ZeroDivisionError:
print("you can not divide by zero!")
else:
print(answer)
運(yùn)行結(jié)果:

工作原理:
一般地,將可能發(fā)生異常的代碼放在try代碼塊中。
Python嘗試執(zhí)行try代碼塊中代碼,如果發(fā)生錯(cuò)誤,則執(zhí)行except中程序代碼;如果運(yùn)行正常,則執(zhí)行else代碼塊中的代碼。
這樣一來,就有效地避免了可能發(fā)生的錯(cuò)誤帶來的程序崩潰問題,讓程序變得更加健壯。
4 運(yùn)用pass語句
實(shí)現(xiàn)代碼:
while True:
first_num = input("\nFirst number: ")
if first_num == 'q':
break
second_num = input("Second number: ")
try:
answer = int(first_num) / int(second_num)
except ZeroDivisionError:
pass
else:
print(answer)
運(yùn)行結(jié)果:

工作原理:
10 當(dāng)代碼執(zhí)行出錯(cuò)時(shí),Python將會執(zhí)行except代碼塊中的pass語句。pass語句既不會出現(xiàn)traceback,也沒有任何輸出。
此外,pass語句還可充當(dāng)占位符,用于提醒程序員該處還未定義任何語句,后面可能會定義語句。
5 小結(jié)
到這里,我們就了解了一些處理異常的方式,我們可以根據(jù)不同的需求,決定是否向用戶報(bào)告錯(cuò)誤以及怎樣報(bào)告錯(cuò)誤,有效地避免一些異常帶來的程序崩潰。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
教你用Python來制作一個(gè)自動(dòng)搶票的腳本小程序
大麥網(wǎng),是中國綜合類現(xiàn)場娛樂票務(wù)營銷平臺,業(yè)務(wù)覆蓋演唱會、 話劇、音樂劇、體育賽事等領(lǐng)域,但是因?yàn)槠睌?shù)有限,還有黃牛們不能丟了飯碗,所以導(dǎo)致了,很多人都搶不到票,那么,今天帶大家用Python來制作一個(gè)自動(dòng)搶票的腳本小程序,需要的朋友可以參考下2023-07-07
python處理數(shù)據(jù),存進(jìn)hive表的方法
今天小編就為大家分享一篇python處理數(shù)據(jù),存進(jìn)hive表的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python 使用 attrs 和 cattrs 實(shí)現(xiàn)面向?qū)ο缶幊痰膶?shí)踐
這篇文章主要介紹了Python 使用 attrs 和 cattrs 實(shí)現(xiàn)面向?qū)ο缶幊痰膶?shí)踐,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
創(chuàng)建Django項(xiàng)目圖文實(shí)例詳解
這篇文章主要介紹了創(chuàng)建Django項(xiàng)目,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Django項(xiàng)目創(chuàng)建的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
使用Python完成15位18位身份證的互轉(zhuǎn)功能
這篇文章主要介紹了使用Python完成15位18位身份證的互轉(zhuǎn)功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11

