如果說我們對語法很熟悉,寫出來的程式碼基本上都是正確的,但是實際上我們也不能保證說我們的程式在執(zhí)行上會不會發(fā)生錯誤,並且終止程式執(zhí)行。
例如:
當(dāng)有要求使用者輸入東西的時候,我都會很故意去輸入超長串的字串給他,看看會不會溢位,又亦或者只能輸入數(shù)字的輸入框輸入其他符號會不會怎麼樣。
有經(jīng)驗的當(dāng)然就會對著些小細(xì)節(jié)進(jìn)行處理。
而今天我們要講的就是這一部分的處理,萬一執(zhí)行發(fā)生錯誤,我們該怎麼處理。
簡單來說就是使用
try:
這裡頭的內(nèi)容放我們要執(zhí)行的程式,假設(shè)try-catch出現(xiàn)問題會往下執(zhí)行except
,沒有的話就直接跳過except的部分。
except name as error:
如果知道會發(fā)生哪類的錯誤,就直接在name的部分打上錯誤名稱,
再打上處理方式之類的。
比方說name是ZeroDivisionError的話,
那我們最好提醒使用者"數(shù)字是不能除以0的,請再輸入:"
else:
沒有錯誤,才會執(zhí)行到這裡,而這裡的內(nèi)容是不會被try-catch的。
finally:
這裡面的內(nèi)容是不管有沒有出現(xiàn)錯誤都會執(zhí)行。
範(fàn)例:
while(1):
try:
a = int(input("125要除以多少呢?"))
print(125/a)
except ZeroDivisionError as ZeroError:
print("不可以除以0")
else:
print("123")
finally:
print("have a nice day")
try:
a = int(input("125要除以多少呢?"))
print(125/a)
except ZeroDivisionError as ZeroError:
print("不可以除以0")
else:
print("123")
finally:
print("have a nice day")
輸入0.執(zhí)行結(jié)果:
125要除以多少呢?0
不可以除以0
have a nice day
反之,不輸入0 :
125要除以多少呢?5
25.0
123
have a nice day
差不多這樣子。
然而,我們總不可能把每一個錯誤都考慮進(jìn)去,所以還有個方法是直接except就好!
except:
print("輸入錯誤,麻煩重新輸入")
print("輸入錯誤,麻煩重新輸入")
這個有其方便的地方,但是用不好可是會造成大災(zāi)難的,真正的bug,說不定就會被著樣子隱藏起來,反而增多很多不必要的成本。
這次我們改輸入!
輸出結(jié)果:
125要除以多少呢?!
輸入錯誤,麻煩重新輸入
have a nice day
部分參考內(nèi)容:
https://www.itread01.com/hkyeihkc.html
雜談:
昨天吃新天地,那個肉、那個肋排,舒服!