Python 運行異常管理

前言

Python使用被稱為異常

的特殊對象來管理程序執行期間發生的錯誤。當發生讓Python不知所措的錯誤時,都會創建一個異常對象。

如果你編寫了處理該異常的代碼,程序將繼續運行;如果你未對異常進行處理,程序將停止,並顯示一個traceback,其中包含有關異常的報告。

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

使用了try-except代碼塊時,即便出現異常,其他程序也將繼續運行。

運用try-except代碼塊

我們知道除數是不能為0的,當程序員誤將除數設置為0時,程序運行後將會出現ZeroDivisionError錯誤。

實現代碼:

<code>1 try:
2 print(6/0)
3 except ZeroDivisionError:
4 print("you can not divide by zero!")/<code>

運行結果:

you can not divide by zero!

工作原理:

將可能出現錯誤的代碼放在try代碼塊中,如果運行無錯誤,將跳過except代碼塊;若導致了錯誤,Python將查找except代碼塊,並執行其中的代碼。

這樣一來,當運行出錯時,用戶看到的便是一條程序員定義的友好的錯誤信息。

若try-except後面還有其他代碼,那麼程序將接著運行。

運用try-except-else代碼塊

實現代碼:

<code> 1 print("Please input two numbers, and I will divide them.")
2 print("Enter 'q' to quit.")
3
4 while True:
5 first_num = input("\\nFirst number: ")
6 if first_num == 'q':
7 break
8 second_num = input("Second number: ")
9
10 try:
11 answer = int(first_num) / int(second_num)
12 except ZeroDivisionError:
13 print("you can not divide by zero!")
14 else:
15 print(answer)/<code>

運行結果:

Python 運行異常管理

工作原理:

一般地,將可能發生異常的代碼放在try代碼塊中。Python嘗試執行try代碼塊中代碼,如果發生錯誤,則執行except中程序代碼;如果運行正常,則執行else代碼塊中的代碼。

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

運用pass語句

實現代碼:

<code> 1 while True:
2 first_num = input("\\nFirst number: ")
3 if first_num == 'q':
4 break
5 second_num = input("Second number: ")
6
7 try:
8 answer = int(first_num) / int(second_num)
9 except ZeroDivisionError:
10 pass
11 else:
12 print(answer)/<code>

運行結果:

Python 運行異常管理

工作原理:

#10 當代碼執行出錯時,Python將會執行except代碼塊中的pass語句。pass語句既不會出現traceback,也沒有任何輸出。

此外,pass語句還可充當佔位符,用於提醒程序員該處還未定義任何語句,後面可能會定義語句。

小結

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


分享到:


相關文章: