農會 資訊管理類程式設計108 年第 15 題單選題
以下為Python 的一個例外處理函式,下列何者正確?
def error_handling(n):
try:
if (n==2):
raise "Error"
return 0
except:
return 1
else:
return 2
Aerror_handling(1)的執行結果為0正確答案
Berror_handling(1)的執行結果為2
Cerror_handling(2)的執行結果為1正確答案
Derror_handling(2)的執行結果為2
Eerror_handling(3)的執行結果為0正確答案
A、C、E正確答案
Python try-except-else 結構中,try 內若有 return 則不執行 else;發生例外則跳至 except。
為什麼答案是 A、C、E
n=1 不滿足 n==2,try 區塊正常執行 return 0,函式直接結束,故回傳 0,正確。
考點:try 正常執行考點:else 執行條件考點:except 捕捉例外考點:例外處理流程
載入中…
完整詳解
Pro · 無限重點 Python try-except-else 結構中,try 內若有 return 則不執行 else;發生例外則跳至 except。
記住「try 有 return 就不跑 else」,n=2 觸發例外回傳 1,n≠2 直接回傳 0。
逐選項分析
Atry 正常執行✓ 正確
n=1 不滿足 n==2,try 區塊正常執行 return 0,函式直接結束,故回傳 0,正確。
Belse 執行條件✕ 陷阱
n=1 時 try 區塊直接 return 0,不會執行 else 區塊回傳 2,故執行結果並非 2。
Cexcept 捕捉例外✓ 正確
n=2 滿足條件觸發 raise 產生例外,跳至 except 區塊執行 return 1,故回傳 1,正確。
D例外處理流程✕ 陷阱
n=2 時觸發例外進入 except 回傳 1,不會回傳 2,故錯誤。
Etry 正常執行✓ 正確
n=3 不滿足 n==2,try 區塊正常執行 return 0,函式直接結束,故回傳 0,正確。
try-except-else 執行流程
| 情境 | try 區塊 | except 區塊 | else 區塊 | 最終回傳 |
|---|
| n != 2 (如 1, 3) | 執行 return 0 | 不執行 | 不執行 (因 try 有 return) | 0 |
| n == 2 | 觸發例外中斷 | 執行 return 1 | 不執行 | 1 |
許多初學者誤以為只要 try 沒發生例外就會執行 else。實際上,若 try 區塊內使用了 return、break 等控制敘述,流程會直接跳出,else 區塊絕對不會被執行。