SonarLint说套接字甚至没有关闭

时间:2017-11-27 05:19:41

标签: java sonarqube sonarlint

我有以下代码。 SonarLint说套接字应该在finally块中关闭。

但我已经关闭了它。 我在这里观察到的另一件事是:只有在finally if条件中有serverSocket.isClosed()条件时才会得到这个。如果我删除它,问题就解决了。

在这里,我想知道这个条件的问题是什么,因为sonarLint无法识别套接字关闭。

ServerSocket serverSocket = null;
try
{
     serverSocket = new ServerSocket(5555);
}
catch(IOException e)
{
     e.printStackTrace();
}
finally
{
    if(serverSocket != null && !serverSocket.isClosed())
    {
        try
        {
           serverSocket.close();
        }
        catch(IOException e)
        {
           e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

因为这个:<xsl:template match="/"> <root> <xsl:variable name="maintext" select="replace(replace(/root/a, '\.', '. '), '-', '- ')"/> <a><xsl:value-of select="tokenize($maintext, ' ')[position() != last()]"/></a> <b><xsl:value-of select="tokenize($maintext, ' ')[last()]"/></b> </root> </xsl:template>

您正在使用if(serverSocket != null &&语句并检查 NOT NULL AND 中的serverSocket 这里的问题是if不为空,然后serverSocket运算符不会让下一个条件执行,&&语句不会执行,最终连接不会关闭。