切換
舊版
前往
大廳
主題

Python筆記Day17-錯誤處理

萬念俱灰的人最強 | 2019-08-26 15:14:04 | 巴幣 1002 | 人氣 81

如果說我們對語法很熟悉,寫出來的程式碼基本上都是正確的,但是實際上我們也不能保證說我們的程式在執行上會不會發生錯誤,並且終止程式執行。

例如:
當有要求使用者輸入東西的時候,我都會很故意去輸入超長串的字串給他,看看會不會溢位,又亦或者只能輸入數字的輸入框輸入其他符號會不會怎麼樣。

有經驗的當然就會對著些小細節進行處理。
而今天我們要講的就是這一部分的處理,萬一執行發生錯誤,我們該怎麼處理。

簡單來說就是使用
try:
這裡頭的內容放我們要執行的程式,假設try-catch出現問題會往下執行except
,沒有的話就直接跳過except的部分。

except name as error:
如果知道會發生哪類的錯誤,就直接在name的部分打上錯誤名稱,
再打上處理方式之類的。
比方說name是ZeroDivisionError的話,
那我們最好提醒使用者"數字是不能除以0的,請再輸入:"

else:
沒有錯誤,才會執行到這裡,而這裡的內容是不會被try-catch的。

finally:
這裡面的內容是不管有沒有出現錯誤都會執行。

範例:
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")


輸入0.執行結果:
125要除以多少呢?0
不可以除以0
have a nice day

反之,不輸入0 :
125要除以多少呢?5
25.0
123
have a nice day

差不多這樣子。

然而,我們總不可能把每一個錯誤都考慮進去,所以還有個方法是直接except就好!
except:
    print("輸入錯誤,麻煩重新輸入")
這個有其方便的地方,但是用不好可是會造成大災難的,真正的bug,說不定就會被著樣子隱藏起來,反而增多很多不必要的成本。

這次我們改輸入!
輸出結果:
125要除以多少呢?!
輸入錯誤,麻煩重新輸入
have a nice day


部分參考內容:
https://www.itread01.com/hkyeihkc.html

雜談:
昨天吃新天地,那個肉、那個肋排,舒服!




創作回應

更多創作