在現實世界,程式不可能永遠在理想狀態下執行,當你讀檔案時,可能檔案不存在;當你輸入數字時,可能有人輸入文字;當你連線網路時,可能會斷線。如果沒有處理這些意外,程式就會直接當掉。
try:
x = int(input("請輸入一個數字:"))
print("結果:", 10 / x)
except ValueError:
print("請輸入正確的數字!")
except ZeroDivisionError:
print("不能除以零!")
這樣程式就能避免因為錯誤輸入而崩潰。
有時候我們不確定會發生什麼錯誤,可以這樣寫:
try:
f = open("not_exist.txt", "r")
print(f.read())
except (FileNotFoundError, PermissionError) as e:
print("發生錯誤:", e)
finally:無論如何都會執行
有些情況下,即使發生錯誤,也要確保程式能做某些收尾動作,例如關閉檔案:
try:
f = open("data.txt", "r")
print(f.read())
except FileNotFoundError:
print("找不到檔案")
finally:
print("程式結束,資源已釋放")
raise:主動拋出例外
有時候我們希望在不符合條件時「自己拋出錯誤」:
def set_age(age):
if age < 0:
raise ValueError("年齡不能是負數!")
print(f"年齡設定為 {age}")
set_age(-1)
請設計一個簡單的計算機,能夠:
這個挑戰能讓你體驗「如何保護程式不被錯誤輸入擊倒」的實戰技巧。