我知道,即使发生异常,总是执行finally块。
如果我们在try或catch块中使用System.exit(0),它将不会执行;
它用于释放资源。
但是我有一个问题,即使在没有最后写入的情况下,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();
仍然会执行,那为什么我最终需要执行?
答案 0 :(得分:1)
在这种情况下,我会说这确实是相同的,但是您是否考虑过10485760
以便try with resource
自动关闭?这将是我能想到的最干净的方法。
当然,如果抛出了不为con
的内容(例如,Exception
),那么没有Throwable
...
答案 1 :(得分:0)
通常,用catch块捕获所有异常不是最佳实践。在这种情况下,如果抛出任何未被捕获的东西,最终将有所帮助。而且,您的第二个代码段将不起作用。