溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python運(yùn)行異常管理解決方案

發(fā)布時間:2020-10-18 01:01:48 來源:腳本之家 閱讀:130 作者:躬耕南陽 欄目:開發(fā)技術(shù)

1 前言

Python使用被稱為異常的特殊對象來管理程序執(zhí)行期間發(fā)生的錯誤。每當(dāng)發(fā)生讓Python不知所措的錯誤時,它都會創(chuàng)建一個異常對象。

如果你編寫了處理該異常的代碼,程序?qū)⒗^續(xù)運(yùn)行;如果你未對異常進(jìn)行處理,程序?qū)⑼V?,并顯示一個traceback,其中包含有關(guān)異常的報告。

異常是使用try-except代碼塊處理的。try-except代碼塊讓Python執(zhí)行指定的操作,同時告訴Python發(fā)生異常時怎么辦。

使用了try-except代碼塊時,即便出現(xiàn)異常,程序也將繼續(xù)運(yùn)行。

2 運(yùn)用try-except代碼塊

我們知道,除數(shù)是不能為0的,當(dāng)程序員誤將除數(shù)設(shè)置為0時,將會出現(xiàn)ZeroDivisionError錯誤。

實現(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)錯誤的代碼放在try代碼塊中,如果運(yùn)行無錯誤,將跳過except代碼塊;若導(dǎo)致了錯誤,Python將查找except代碼塊,并執(zhí)行其中的代碼。

這樣一來,當(dāng)運(yùn)行出錯時,用戶看到的便是一條友好的錯誤信息。

若try-except后面還有其他代碼,那么程序?qū)⒔又\(yùn)行。

3 運(yùn)用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)

運(yùn)行結(jié)果:

Python運(yùn)行異常管理解決方案

工作原理:

一般地,將可能發(fā)生異常的代碼放在try代碼塊中。

Python嘗試執(zhí)行try代碼塊中代碼,如果發(fā)生錯誤,則執(zhí)行except中程序代碼;如果運(yùn)行正常,則執(zhí)行else代碼塊中的代碼。

這樣一來,就有效地避免了可能發(fā)生的錯誤帶來的程序崩潰問題,讓程序變得更加健壯。

4 運(yùn)用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)

運(yùn)行結(jié)果:

Python運(yùn)行異常管理解決方案

工作原理:

10 當(dāng)代碼執(zhí)行出錯時,Python將會執(zhí)行except代碼塊中的pass語句。pass語句既不會出現(xiàn)traceback,也沒有任何輸出。

此外,pass語句還可充當(dāng)占位符,用于提醒程序員該處還未定義任何語句,后面可能會定義語句。

5 小結(jié)

到這里,我們就了解了一些處理異常的方式,我們可以根據(jù)不同的需求,決定是否向用戶報告錯誤以及怎樣報告錯誤,有效地避免一些異常帶來的程序崩潰。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI