gpt4 book ai didi

java - 是什么导致finally block 执行得太快?

转载 作者:行者123 更新时间:2023-12-02 06:49:37 25 4
gpt4 key购买 nike

我有一个 try-catch-finally block ,如下所示:

ResultSet rs;
PreparedStatement ps;
Connection conn;
try {
for (int i = 0; i < list.size(); i++) {
** execute SQL query **
}
} catch (Exception e) {
throw e;
} finally {
** close result set **
** close prepared statement **
** close connection **
}

我已经验证我的 ArrayList 列表中有 534 个元素。问题是,用于关闭所有内容的finally block 是在第一次出现for 循环后执行的,这会导致下一次出现抛出异常,因为连接现已关闭。

我从未遇到过finally block 在try block 完成之前执行的情况。什么可能导致这种情况?

最佳答案

基本上,发生的事情是终于按预期工作。简短的解释是,无论 try block 如何终止,都会执行 finally block 。

在您的示例中,根据您所说的,最可能的情况如下:

  • 循环体抛出一些异常,
  • 异常被捕获并重新抛出,并且
  • 然后执行 finally block 。

finally block 在 try block “终止”之前不会执行,因此您认为 finally block 是导致循环体失败是不正确的。

引用:http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

关于java - 是什么导致finally block 执行得太快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212560/

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