乙個常見的問題,混淆的答案

2022-04-12 08:22:20 字數 575 閱讀 3107

問題是:try{} 裡有乙個return語句, 那麼緊跟這個try後的finally{}裡的code會不會被執行,什麼時候被執行, 在return前還是後?

有回答是:finally塊先於return執行。 

這個問題可以用乙個小實驗得到解答

int result =test(); 

}private

inttest()

catch

finally

這段**的test()返回值是2,而不是3, 可見 try {}裡的 return i+j 裡的表示式先求值,然後放到乙個暫存變數,之後轉到finally{} 塊裡的**繼續執行,執行完後跳回try{}塊結尾,並把轉存變數返回

下面的情況是try{}塊裡發生了異常

int result =test(); 

}private

inttest()

catch

finally

這段**的異常出現後,跳到catch{}塊執行,之後跳到finally{}塊執行, 之後跳回catch{}塊結尾處返回。

乙個常見的優先順序問題

優先順序問題確實是比較讓人鬱悶的問題,有時候出錯了,查詢半天最後才發現是它的問題。下面這個問題也是很常見的乙個。a 3 b 5 if a 5 b 7 echo a b a和b分別為什麼呢?不執行 先猜一猜。第一眼看上去 不假思索的話 相信很多人說是6,8 然後稍加思索的話 可能會選 6,6 然後再思...

乙個常見的錯誤

d software codeblocks test1 main.c 28 warning suggest parentheses around assignment used as truth value wparentheses warning的有道翻譯 警告 建議括號周圍的賦值作為真值 如下 ...

原創 openstack乙個常見問題的解決辦法

openstack的乙個常見錯誤解決辦法,只供新手參考,有經驗者請繞過。root nova compute home images uec publish tarball ubuntu1010 uec localuser image.tar.gz mybucket2 i386 unable to r...