Python運行異常管理解決方案
1 前言
Python使用被稱為異常的特殊對象來管理程序執(zhí)行期間發(fā)生的錯誤。每當發(fā)生讓Python不知所措的錯誤時,它都會創(chuàng)建一個異常對象。
如果你編寫了處理該異常的代碼,程序?qū)⒗^續(xù)運行;如果你未對異常進行處理,程序?qū)⑼V梗@示一個traceback,其中包含有關異常的報告。
異常是使用try-except代碼塊處理的。try-except代碼塊讓Python執(zhí)行指定的操作,同時告訴Python發(fā)生異常時怎么辦。
使用了try-except代碼塊時,即便出現(xiàn)異常,程序也將繼續(xù)運行。
2 運用try-except代碼塊
我們知道,除數(shù)是不能為0的,當程序員誤將除數(shù)設置為0時,將會出現(xiàn)ZeroDivisionError錯誤。
實現(xiàn)代碼:
try: print(6/0) except ZeroDivisionError: print('you can not divide by zero!')
運行結(jié)果:
you can not divide by zero!
工作原理:
將可能出現(xiàn)錯誤的代碼放在try代碼塊中,如果運行無錯誤,將跳過except代碼塊;若導致了錯誤,Python將查找except代碼塊,并執(zhí)行其中的代碼。
這樣一來,當運行出錯時,用戶看到的便是一條友好的錯誤信息。
若try-except后面還有其他代碼,那么程序?qū)⒔又\行。
3 運用try-except-else代碼塊
實現(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)
運行結(jié)果:
工作原理:
一般地,將可能發(fā)生異常的代碼放在try代碼塊中。
Python嘗試執(zhí)行try代碼塊中代碼,如果發(fā)生錯誤,則執(zhí)行except中程序代碼;如果運行正常,則執(zhí)行else代碼塊中的代碼。
這樣一來,就有效地避免了可能發(fā)生的錯誤帶來的程序崩潰問題,讓程序變得更加健壯。
4 運用pass語句
實現(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)
運行結(jié)果:
工作原理:
10 當代碼執(zhí)行出錯時,Python將會執(zhí)行except代碼塊中的pass語句。pass語句既不會出現(xiàn)traceback,也沒有任何輸出。
此外,pass語句還可充當占位符,用于提醒程序員該處還未定義任何語句,后面可能會定義語句。
5 小結(jié)
到這里,我們就了解了一些處理異常的方式,我們可以根據(jù)不同的需求,決定是否向用戶報告錯誤以及怎樣報告錯誤,有效地避免一些異常帶來的程序崩潰。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
