何時執行Java語言的finally塊

2021-08-04 05:00:12 字數 1151 閱讀 7386

最近看到乙個非常有意思的**:

public

class testexception

public

static

intfoo() catch(arithmeticexception e) finally

}}

問:程式的輸出是什麼?

分析:

程式會丟擲arithmeticexception異常,因此會執行到catch塊,所以返回45是有可能的,返回4可以排除了;

但是,但是,但是好像也學到過finally是一定會在異常結束前執行,那麼就應該是返回34了。

下面可以做兩個簡單的實驗。

實驗一:

public

class testexception

public

static

intfoo() catch(exception e) finally

}}

輸出結果:

execute catch block

execute finally

block

34

實驗二:

public

class testexception

public

static

intfoo() catch(exception e) finally

}}

輸出結果:

execute try block, before

return

execute finally block

34

結果都是返回34,說明finally會在try和catch塊結束之前執行,那結束之前又是在什麼時候呢?

實驗一說明了catch要先於finally塊開始執行,但是在catch塊執行return語句之前,會執行finally塊;

實驗二說明了當try的return語句之前時,會先執行finally塊。

因此:finally會在try和catch return之前執行,如果try和catch塊中沒有return語句,那就是在兩個塊的大括號結束前執行。

ubuntu下定時執行java程式

a.在終端下輸入crontab e 加入一行,sh 具體可參考鳥哥的私房菜 b.使用者編輯好後,儲存,會存放在 var spool cron crontab user。如果是普通使用者沒有許可權訪問 crontab檔案,會提示儲存在 tmp cron.x crontap,作為臨時檔案,其實在 var...

Java專案啟動時執行指定方法的幾種方式

這個註解呢,可以在spring載入這個類的時候執行一次。來看一下下方 123 4567 891011 1213 1415 1617 1819 2021 component public class test 我第二個執行 autowired private t t 我第三個個執行 postconst...

關於第四章中,SQL指令何時執行小方框的補充說明

關於第四章中,sql指令何時執行小方框的補充說明 文 黃忠成 在 極意之道 net framework 3.5 資料庫開發聖典 asp.net 一書中,我於第四章,4 36頁處放上sql指令何時執行的小方框,裡面的程式證明了當對同一linq to sql回傳值下達多次linq expression表...