今日對話:如何阻止程式崩潰當機?
我的 Prompt(提示詞):
「我的程式只要使用者亂輸入文字,或是遇到網路斷線,就會直接顯示一堆紅色的 Error 然後當機關閉。請教我如何用 Python 的 try-except 來攔截這些錯誤?請用白話文解釋它的原理,並給我一個簡單的實作範例。」
AI 導師給了一個非常有安全感的比喻:「try-except 就像是給你的程式穿上一件防彈衣,或是高空彈跳的安全網。」
它的核心結構分為兩個區塊:
常見的錯誤類型 (Error Types):
ValueError:值錯誤(例如:要把 "蘋果" 轉換成整數數字)。
ZeroDivisionError:除以零錯誤(數學上不能除以 0)。
FileNotFoundError:找不到檔案錯誤。
Exception:所有錯誤的老大。如果不確定會發生什麼錯,抓它就對了!
我在 VS Code 裡建立 day23.py,寫了一個「披薩分片計算機」。這次我故意不乖乖輸入數字,來測試看看防護網有沒有生效:
python
print("--- 🍕 披薩分片計算機 ---")
#把可能有風險的程式碼放進 try 區塊
try:
total_slices = int(input("請輸入披薩總共有幾片 (請填數字):"))
people = int(input("請輸入有幾個人要吃 (請填數字):"))
#計算每人可以吃幾片
slices_per_person = total_slices / people
print(f"\n✅ 計算成功!每個人可以吃到 {slices_per_person} 片披薩。")
#如果使用者輸入了文字 (無法轉成 int)
except ValueError:
print("\n❌ 錯誤警告:請輸入『阿拉伯數字』啦!不能輸入中文字或英文字母。")
#如果使用者輸入人數為 0 (除以 0 會報錯)
except ZeroDivisionError:
print("\n❌ 錯誤警告:人數不能是 0!難道披薩要餵給空氣吃嗎?")
#攔截其他所有意料之外的錯誤 (終極安全網)
except Exception as e:
print(f"\n❌ 發生了未知的錯誤:{e}")
print("-" * 30)
print("🏁 程式順利執行完畢,沒有閃退!")
今天學會了如何用 try-except 幫程式建立安全網。