Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在try-catch中最终关闭上的数据库连接_Java_Hadoop_Hbase_Try Catch - Fatal编程技术网

Java 在try-catch中最终关闭上的数据库连接

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

如果要在方法中打开数据库连接,并且希望确保在出现异常时关闭连接,则可以将connection.close()放在finally块中。我的问题是,如果关闭连接也会引发异常呢?这段代码应该是什么样子

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方法,该方法尝试尽可能多地关闭并捕获任何异常(可能记录它们)。然后,应用程序将继续运行,就好像
关闭
起作用一样

请注意,这样的助手甚至是必要的