我知道,即使发生异常,也始终会执行 finally 块。如果我们在 try 或 catch 块中使用 System.exit(0) 它不会执行;它用于释放资源。但我有一个问题,即使没有 finally 写入,catch 块之后的语句也会执行,对吗?请解释一下。请参阅以下代码片段 -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();意志无论如何都会执行,那为什么我需要finally?
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
在这种特殊情况下,我会说这确实在某种程度上相同,但是您是否考虑过try with resource
这样con
会自动关闭?这将是我能想到的最干净的方式。
当然,如果Exception
抛出了一些不一样的东西(Throwable
例如),那么如果没有finally
...
阿晨1998
TA贡献2037条经验 获得超6个赞
通常使用 catch 块捕获所有异常并不是最佳实践。在这种情况下,如果抛出任何未捕获的东西,finally 会有所帮助。而且,您的第二个代码段将不起作用。
添加回答
举报
0/150
提交
取消