練習題 037:拋出例外 (raise)
🌙
深色模式
除了遇到錯誤被動防禦,我們也可以
主動出擊
!
你正在開發銀行 ATM 的系統,在提款發生之前,我們必須防範各種漏洞以免造成銀行的損失!例如:如果客戶提領「負數」金額,或是提款金額「超過了帳戶餘額」,我們絕對不能讓系統往下跑,必須主動「報錯」把程式擋下來!
任務接力:
1. 完成下方的
withdraw(amount)
提款函式(假設大家目前固定帳戶餘額都是
10000
元)。
2. 開頭先使用
if
檢查:如果
amount
小於 0,請直接使用
raise Exception(...)
主動發出這個錯誤文字:
提款金額不可為負數!
3. 再檢查第二個條件:如果
amount
大於
balance
(10000),請主動發出這個錯誤文字:
餘額不足!
4. 如果以上的
if
條件都沒有被觸發,它就會正常執行到最後面那句
print()
,成功完成提款。
def withdraw(amount): balance = 10000 # TODO: 請在此處使用 if 與 raise 主動拋出例外,檢查兩種例外狀況 print(f"提款成功,為您吐出 {amount} 元鈔票") # ----- 以下可以自己取消註解測試看看 ----- # withdraw(-500) # 應該會引發 Exception: 提款金額不可為負數! # withdraw(15000) # 應該會引發 Exception: 餘額不足! # withdraw(3000) # 應該會印出 提款成功,為您吐出 3000 元鈔票
🏃♀️➡️ 跑看看 🏃♀️
⚠️ 如果程式執行過久(不小心寫了無限迴圈),瀏覽器當掉,請重開網頁。