SonarLint显示以下错误:
请查找示例代码。
public String getProductNumber() throws BusinessDelegateException {
String productNo = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String query = //some query
try {
DataSource ds = getDataSource();
con = ds.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(query);
productNo =.......
....................
}catch (Exception e) {
String errorMsg = "Error occured in getProductNumber()";
throw new BusinessDelegateException(errorMsg, e);
}finally{
try {
if(rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return productNo;
}
我们可以通过以下方式修改finally块来解决这个问题。但它似乎仍然像是接球拦网的重复。我们还有别的办法解决这个问题吗?
finally{
try {
if(rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
使用Try with资源。这是最好的选择。
如果不尝试使用资源,您只能通过使用可重用的方法来改进代码,请调用main方法:
closeResources(rs, stmt, con);
它将为每个资源调用不同的方法,例如语句:
public void closeResource(Statement stmt) {
if (stmt != null) {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
顺便说一句,你最好使用logger而不是e.printStackTrace()
对于完整的解决方案,您可以检查在数组中添加资源并在循环中关闭它们的广泛示例:
for (Closeable resource : resources) {
try {
resource.close();
我正在使用MySQL工作台(5.6.19)。它有几个连接,其中我要访问的表位于“Connection1”(连接名称)中。连接主机:122.0.0.0。我的数据库名是“sorder”。user=“root”,password=“password”,port=3306。 这是我的一段代码: 我的驱动程序连接失败。另外,我不确定我的路径Strin url应该是什么,因为mySQL workbench中有
所以我已经实现了一个Spring引导JAVA应用程序作为服务器和角作为前端。所以实际上,当我在本地运行这些时,一切都很好。 但是当我为两者构建Docker映像并尝试将它们作为容器进行测试时,我面临着CORS错误。 由于我使用JWT令牌作为安全性,我已经禁用了crsf和默认的Spring Security令牌。所以在这里您可以看到CORS的JAVA配置; 这就是nginx。形态 即使我尝试在同一网络
我正尝试在出现连接错误时添加一个控件。我的目的是通过捕捉异常来阻止程序抛出异常。 但它会在控制台中打印: 抱歉,如果我打印了太多的StackTrace... 我想知道,如果我不打印出stacktrace,我如何使异常消失?谢谢:)
问题内容: 查询1打开15个连接,执行后将关闭它们。但是将永远不会执行,因为它包含等待自由连接的内容。 如何解决这个问题呢? 问题答案: 你有一个僵局。在最坏的情况下,您有15个goroutine持有15个数据库连接,而所有这15个goroutine都需要一个新的连接才能继续。但是要获得新的连接,就必须前进并释放一个连接:死锁。 链接的维基百科文章详细介绍了防止死锁的方法。例如,代码执行仅在拥有需
我在这里遇到了一些非常奇怪的事情,当我输入“mvn clean install”时,我在maven中的构建是成功的,但是一旦导入到Eclipse中,它就会显示错误。 亲眼看看: 我想从pom.xml中排除石英解决了这个问题,但我想知道为什么。 PS:这是,如果您想看到它:
错误处理 有些方法通通过参数返回 error 的引用,使用这样的方法时应当检查方法的返回值,而非 error 的引用。 推荐: NSError *error = nil; if (![self trySomethingWithError:&error]) { // Handle Error } 此外,一些苹果的 API 在成功的情况下会对 error 参数(如果它非 NULL)写入垃圾值(