一個非常簡單的函式:
|
|
我們都知道最後會輸出1
再來回答看看底下這段程式會輸出什麼呢?
|
|
(a) 1
(b) 2
(c) 3
答案竟然是 (c) 3 ?!
如何?跟你想像的一樣嗎?
照理來講,
在函式內執行 x = 1
之後就遇到了 return x
就該跳出迴圈了。
But 🤨
這段程式是放在 try/except
異常處理中,
而當中如果有 finally
,那 finally
是無論例外有沒有發生都會執行的。
上面那道題目,如果使用IDE的單步執行來偵錯的話,會發現 try
內的 return x
執行完後,會跳到 finally
內執行 x = 3
和 return x
,所以最後函式會返回3
。
因此在撰寫程式時,避免把 return
寫在 try/except
異常處理中,以免發生這種較不直觀的流程。
畢竟發生異常也要把異常處理好再離開嘛~
我想打起精神來,卻不小心把它打死了
🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~