本篇概要:業餘碼農學Python-18,本篇重點總結保留字try、except、else、finally的使用,通過4個保留字的組合使用,進行程序異常的捕捉與處理。
一、不按套路出牌的用戶
前面我嘗試編寫了一些Pyhon實例,今天突然心血來潮,翻出之前的實例,來了一次突(zuo)破( si)的嘗試——程序運行後,不按照要求輸入,如:
- “請輸入帶有符號的溫度【攝氏度用C,華氏溫度用F】:”我輸入了80A;
- “請輸入金額【以”RMB”或”USD”結尾】:”我輸入2000元;
- “請輸入數字:”我輸入漢字;“請輸入整數”我輸入字母……
結果,悲劇了!
所有之前我寫的代碼都哭了:“你是個壞人,我要罷工、不跟你玩了。”
面對不按套路出牌的用戶,咋辦?
Python提供了一套組合拳,那就是保留字try、except、else、finally組合。
二、運用Python保留字try、except、else、finally,捕捉程序異常
- 1、異常捕捉與處理的基本套路(try + except組合)
#異常捕捉與處理的基本套路
try:
except : #異常類型可以缺省,即任意一種異常出現均執行語句塊2
我們舉個實例:
#計算輸入數字的2倍值
n = eval(input("請輸入一個數字:"))
m=n*2
print(m)
當我們輸入數字時,程序是可以正常運行,並輸出用戶所輸入數字的2倍的值.
但當我們輸入的不是數字時,比如我們輸入字母a,程序則會報錯。
下面我們加入try + except 組合,捕捉輸入數據的異常並給用戶一個提示。
#異常捕捉與處理的基本套路
try:
n = eval(input("請輸入一個數字:"))
m=n*2
print(m)
except:
print("你輸入的不是一個數字")
再次輸入一個非數字的值a,則程序輸出提示“你輸入的不是一個數字”。
- 2、異常捕捉與處理的組合拳(try、except、else及finally組合)
用法如下
#異常捕捉處理組合拳
try:
except:
#出現異常執行語句塊2
else:
#只有在不發生異常的時候才執行語句塊3
finally:
#無論是否出現異常,語句塊4都會執行
程序則會按照以下規則執行:
繼續優化前面的實例
#異常捕捉與處理組合拳
try:
n = eval(input("請輸入一個數字:"))
m=n*2
except:
print("你輸入的不是一個數字")
else:
print("{}的2倍為{}".format(n,m))
finally:
print("異常捕捉處理組合拳結束")
運行結果完美達到預期。
輸入數字20,程序運行結果顯示:
輸入非數字a,程序運行結果顯示:
因為初學,以上僅是異常捕捉與處理的基本使用及實例。更加深入的研究及使用,還要待後面的努力學習。
【end】
閱讀更多 騎豬的小猴子 的文章