try finaly return返回結果

2021-09-12 01:29:44 字數 942 閱讀 2789

下面**執行結果是:

finally語句塊

和是:43

public class test 

catch (exception e)

finally

return 0;

} public static void main(string ar**)

}

解釋:

從結果上看,貌似finally裡的語句是在return之後執行的,其實不然,實際上finally 裡的語句是在在return 之前執行的。那麼問題來了,既然是在之前執行,那為什麼a的值沒有被覆蓋了?

實際過程是這樣的:當程式執行到try{}語句中的return方法時,它會幹這麼一件事,將要返回的結果儲存到乙個臨時棧中,然後程式不會立即返回,而是去執行finally{}中的程式, 在執行a = 2時,程式僅僅是覆蓋了a的值,但不會去更新臨時棧中的那個要返回的值 。執行完之後,就會通知主程式「finally的程式執行完畢,可以請求返回了」,這時,就會將臨時棧中的值取出來返回。這下應該清楚了,要返回的值是儲存至臨時棧中的。

再來看乙個例子,稍微改下上面的程式:

public abstract class test 

public static int beforefinally()finally

}}/**output:

2*/

在這裡,finally{}裡也有乙個return,那麼在執行這個return時,就會更新臨時棧中的值。同樣,在執行完finally之後,就會通知主程式請求返回了,即將臨時棧中的值取出來返回。故返回值是2。

python mysqldb 查詢返回字典結構

mysqldb預設查詢結果都是返回tuple,輸出時候不是很方便,必須按照0,1這樣讀取,無意中在網上找到簡單的修改方法,就是傳遞乙個cursors.dictcursor就行。預設程式 import mysqldb db mysqldb.connect host localhost user roo...

判斷ExecuteScalar 是否返回結果

executescalar 返回的是首行首列的值,一般用於執行這類查詢 select count from table 返回的型別是 object,如果資料庫中沒有任何記錄時,如何判斷呢?以下是方案 其一 呼叫convert的isdbnull來判斷 object objresult tempcmd....

Oracle 函式function之返回結果集

可以按照最後的寫。工作中常需要經過一段複雜邏輯處理後,得出的乙個結果集。並能夠將這個結果集作為乙個表看待,去進行關聯查詢 我一般採用建立函式function的方式來處理。建立包,宣告function和type create orreplace package pak tem astype date ...