Python學習筆記函數之異常處理
阿新 • • 發佈:2018-09-08
作用 cti odi 可恥 dom tor 技術 ret define
隨筆記錄方便自己和同路人查閱。
#------------------------------------------------我是可恥的分割線-------------------------------------------
在Python程序中遇到錯誤,或“異常”,意味著整個程序崩潰。你不希望這發生在真實的程序中。相反,
你希望程序能檢測錯誤,處理它們,然後繼續運行。
列如,一個程序,它有一個“除數為零”的錯誤。
#------------------------------------------------我是可恥的分割線-------------------------------------------
示例代碼:
# # -*- coding:utf-8 -*- # Autor: Li Rong Yang #import random def spam(divideBY):#define a function return 42 / divideBY# print(spam(2))#function reference print(spam(10))#function reference print(spam(0))#function reference print(spam(1))#function reference
運行結果:
當試圖用一個數整除零時,程序發生了zeroDivisionError錯誤,根據錯誤信息中給出的行號,我們知道是spam中的return語句導致的錯誤。
導致錯誤後最後一行print(spam(1))沒有被執行,如果我們想要讓程序遇到錯誤後給出提示並繼續執行,看修改後的代碼:
# # -*- coding:utf-8 -*- # Autor: Li Rong Yang #import random def spam(divideBY):#define a function try: return 42 / divideBY# except ZeroDivisionError: print(‘Error:Invalid argument.‘) print(spam(2))#function reference print(spam(10))#function reference print(spam(0))#function reference print(spam(1))#function reference
運行結果:
在修改程序中我們加了try:和except:,它們的作用是,如果在try:代碼塊中發生錯誤,程序立即就轉到except子句的代碼。
在運行except子句的代碼之後,程序繼續執行。
try和excapt可以放在函數外使用,但我們盡量避免這樣,看下面代碼示例:
# # -*- coding:utf-8 -*- # Autor: Li Rong Yang #import random def spam(divideBY):#define a function return 42 / divideBY # try: print(spam(2)) # print(spam(10)) # print(spam(0)) # print(spam(1)) # except ZeroDivisionError: print(‘Error:Invalid argument.‘)
運行結果:
根據運行結果可看出,print(spam(1))從沒有被執行,這是因為如果try中發生錯誤會立即跳轉到except子句,但程序不會再返回try子句。
Python學習筆記函數之異常處理