Java 在try-catch中最终关闭上的数据库连接
如果要在方法中打开数据库连接,并且希望确保在出现异常时关闭连接,则可以将connection.close()放在finally块中。我的问题是,如果关闭连接也会引发异常呢?这段代码应该是什么样子Java 在try-catch中最终关闭上的数据库连接,java,hadoop,hbase,try-catch,Java,Hadoop,Hbase,Try Catch,如果要在方法中打开数据库连接,并且希望确保在出现异常时关闭连接,则可以将connection.close()放在finally块中。我的问题是,如果关闭连接也会引发异常呢?这段代码应该是什么样子 try { conn.open(); //Do stuff with database } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); //Can potentially thr
try {
conn.open();
//Do stuff with database
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close(); //Can potentially throw exception.
}
我一直在将“抛出异常”作为方法的一部分。例如:
public void doSomethingWithDB() throws Exception {
//Method Body
}
如果在conn.close()上引发异常,在大多数情况下,连接是否自动关闭?还是溪流会继续开放
关于更多内容,我将Apache Phoenix与HBase一起使用,并遇到了这个问题,因为我试图成为一个更安全的编码者,并且不会意外地使流对HBase开放。从
close
引发的异常意味着有关连接关闭的某些内容不起作用。所以很可能不是所有的东西都被清理干净了。然而,在这一点上你可能做不了多少
通常的做法是使用一个closequity
helper方法,该方法尝试尽可能多地关闭并捕获任何异常(可能记录它们)。然后,应用程序将继续运行,就好像关闭
起作用一样
请注意,这样的助手甚至是必要的