gpt4 book ai didi

java - 我可以在没有finally block 的情况下编写相同的代码吗?

转载 作者:行者123 更新时间:2023-11-30 06:01:08 24 4
gpt4 key购买 nike

我知道,即使发生异常,finally block 也总是会执行。

如果我们在 try 或 catch block 中使用 System.exit(0),它不会执行;

用于释放资源。

但是我有疑问,catch block 之后的语句无论如何都会执行,即使这些语句没有finally 编写,对吗?

请解释一下。

请参阅以下代码片段 -

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?

最佳答案

在这种特殊情况下,我会说这确实在某种程度上是相同的,但是您是否考虑过尝试使用资源以便自动关闭con?这将是我能想到的最干净的方式。

当然,如果抛出了非 Exception 的内容(例如 Throwable),那么如果没有 finally ,您的连接将不会关闭。 ..

关于java - 我可以在没有finally block 的情况下编写相同的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52257166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com