一個非常簡單的函式:
| |
我們都知道最後會輸出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 個讚~