今日對話:如何讓程式變成打不死的蟑螂?
我的 Prompt(提示詞):
「我的程式常常因為使用者亂輸入,或是除以零等狀況而崩潰閃退。請用白話文教我 Python 的例外處理機制是什麼?另外,如果我想自己規定某種狀況也算錯誤(例如規定不能輸入負數),該怎麼寫?」
AI 導師給了一個非常生動的比喻:例外處理就像是替程式安排特技替身與安全網!
它幫我把語法拆解成四個關鍵字:
我打開 VS Code 建立 day16.py檔案,寫了一個「年齡計算機」來測試這套防禦機制:
python
print("歡迎使用年齡計算機!")
try:
# --- 危險動作區 ---
age_str = input("請輸入您的年齡(請輸入整數):")
age = int(age_str) # 如果使用者輸入 "abc",這裡會觸發 ValueError
#示範自訂錯誤規則 (raise)
if age < 0:
raise Exception("年齡怎麼可能是負數啦!你穿越來的嗎?")
elif age > 150:
raise Exception("超過 150 歲!?您確定沒有打錯嗎?")
print(f"驗證通過!您明年就 {age + 1} 歲了。")
#--- 安全網區 ---
except ValueError:
# 專門接住 int() 轉型失敗的錯誤
print("❌ [錯誤] 請不要輸入中英文字母或小數點,只能輸入阿拉伯數字!")
except Exception as e:
# 接住上面用 raise 丟出來的自訂錯誤,或者其他未知的錯誤
#變數 e 會捕捉到錯誤的詳細訊息
print(f"⚠️ [警告] {e}")
#--- 善後清潔隊 ---
finally:
print("不管剛剛有沒有報錯,這句一定會印出來:計算機服務結束!")
print("✅ 程式平安執行到最後一行,沒有閃退!")
有了 try / except 護體,我們的程式已經非常強壯了。以後只要遇到牽涉到「使用者輸入」或「讀取外部檔案」等不確定因素,就有這個非常好的解決辦法!