Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 Sonarqube存在不关闭返回对象的问题。我怎么修理它?_Java_Spring_Jdbc_Sonarqube_Sonarqube Scan - Fatal编程技术网

Java Sonarqube存在不关闭返回对象的问题。我怎么修理它?

Java Sonarqube存在不关闭返回对象的问题。我怎么修理它?,java,spring,jdbc,sonarqube,sonarqube-scan,Java,Spring,Jdbc,Sonarqube,Sonarqube Scan,我正在尝试修复Sonarqube发现的一些问题,我有几个基本上与这里显示的示例相同的问题。它告诉我应该关闭对象,但如果对象是方法返回给调用方的对象,我真的不能这样做,不是吗 打包my.qe.codereview.myservice.data; 导入java.sql.Connection; 导入java.sql.PreparedStatement; 导入java.sql.SQLException; 导入java.util.Properties; 导入org.springframework.bean

我正在尝试修复Sonarqube发现的一些问题,我有几个基本上与这里显示的示例相同的问题。它告诉我应该关闭对象,但如果对象是方法返回给调用方的对象,我真的不能这样做,不是吗

打包my.qe.codereview.myservice.data;
导入java.sql.Connection;
导入java.sql.PreparedStatement;
导入java.sql.SQLException;
导入java.util.Properties;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.jdbc.core.PreparedStatementCreator;
导入org.springframework.stereotype.Component;
导入my.qe.review.integration.to.StatusHistoryInsertRequest;
@组成部分
公共类InsertStatusHistoryPSCBuilder{
@自动连线
私有财产查询程序;
public PreparedStatementCreator生成(最终状态历史InsertRequest请求){
返回新的PreparedStatementCreator(){
@凌驾
公共PreparedStatement createPreparedStatement(连接con)引发SQLException{
PreparedStatement pst=con.prepareStatement(queryProps.getProperty(“insertStatusHistory”);
setObject(1,request.getReviewStatusHistoryId());
setObject(2,request.getReviewHistoryId());
返回pst;
}
};
}
}
我在谷歌上搜索了这个问题,我发现所有的例子都涉及到一个只存在于所讨论的方法范围内的对象。没有一个解决方法像这里一样返回对象的情况。我无法控制调用方在返回后对对象执行的操作

我能做些什么来解决这个问题?我假设你不能关闭一个对象,但仍然返回它(正确吗?)。或者,真正的问题是,该方法包含对另一个可能引发异常的方法的调用,而我需要捕获、关闭和重试

更新:使用try-with-resources创建可关闭对象不起作用,因为在方法返回之前,对象仍然会被关闭,这导致调用方抛出异常,因为返回的对象已经关闭(这回答了上面段落中的问题)。在这个时候,我不知道有什么方法可以返回一个可关闭的对象而不将其标记为拦截器


有人建议将其标记为假阳性。我不确定这是否是我工作环境中的一种选择。

你应该把它标记为假阳性,然后继续。你应该把它标记为假阳性,然后继续。