【发布时间】:2021-02-14 12:43:41
【问题描述】:
我正在使用 sonarqube 来分析代码以检查其中的一些问题。正如标题所说,该工具给我的建议之一是,“使用 try-with-resources 或在“finally”子句中关闭此“语句””。我不知道它指的是什么,即使在检查了一些笔记之后。这段代码是这样的:
try {
sentencia = conexion.createStatement();
sentencia.executeUpdate(consulta);
dispose();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this, "No se puede insertar la cita", "Error", JOptionPane.ERROR_MESSAGE);
LOGGER.log(Level.SEVERE,"Excepcion provocada",e1);
}
我该如何解决这个问题,以便按照 Sonarqube 的建议进行表达?
【问题讨论】:
-
您没有在 Statement 对象
sentencia上调用close()。一种方法是使用资源尝试。或者你可以自己调用它 -
您创建了一个语句,完成后需要关闭它。
-
顺便说一句:
sentencia未在此块中声明这一事实可能表明您的变量或字段范围太广。 -
请搜索“java try-with-resources”。这会在尝试后自动关闭资源。您也可以使用 finally 子句“java try catch finally”。