我知道,即使發(fā)生異常,也始終會(huì)執(zhí)行 finally 塊。如果我們?cè)?try 或 catch 塊中使用 System.exit(0) 它不會(huì)執(zhí)行;它用于釋放資源。但我有一個(gè)問(wèn)題,即使沒(méi)有 finally 寫入,catch 塊之后的語(yǔ)句也會(huì)執(zhí)行,對(duì)嗎?請(qǐng)解釋一下。請(qǐng)參閱以下代碼片段 -public static void main(String[] args) throws SQLException { Connection con=null; try { String url ="someURL"; String user ="someUserName"; String password ="somePassword"; con=DriverManager.getConnection(url, user, password); . . . } catch(Exception e) { e.printStackTrace(); } finally { if(con!=null) { con.close(); } }}和public static void main(String[] args) throws SQLException { Connection con=null; try { String url ="someURL"; String user ="someUserName"; String password ="somePassword"; con=DriverManager.getConnection(url, user, password); . . . }catch(Exception e) { e.printStackTrace(); } if(con!=null) { con.close(); }}所以我的con.close();意志無(wú)論如何都會(huì)執(zhí)行,那為什么我需要finally?
2 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
在這種特殊情況下,我會(huì)說(shuō)這確實(shí)在某種程度上相同,但是您是否考慮過(guò)try with resource
這樣con
會(huì)自動(dòng)關(guān)閉?這將是我能想到的最干凈的方式。
當(dāng)然,如果Exception
拋出了一些不一樣的東西(Throwable
例如),那么如果沒(méi)有finally
...

阿晨1998
TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
通常使用 catch 塊捕獲所有異常并不是最佳實(shí)踐。在這種情況下,如果拋出任何未捕獲的東西,finally 會(huì)有所幫助。而且,您的第二個(gè)代碼段將不起作用。
添加回答
舉報(bào)
0/150
提交
取消