首页 > 解决方案 > 此方法调用为非空方法参数传递空值。要么将参数注释为应始终为非空的参数

问题描述

以下方法的 SonarQube 错误,任何有关如何解决问题的建议专家 - 此方法调用为非空方法参数传递空值。要么将参数注释为应始终为非空的参数,要么分析表明它将始终被取消引用。

    public ByteArrayResource readFile() throws IOException {
        byte[] content = null;

        try (S3Object object = amazonS3.getObject(new GetObjectRequest(bucketName, key))) {
            content = IOUtils.toByteArray(object.getObjectContent());
            return new ByteArrayResource(content);

        } catch (IOException e) {
            LOG.error("IOException caught while reading file", e);
        } 
        return new ByteArrayResource(content);
    }

标签: javasonarqube

解决方案


问题在于块return new ByteArrayResource(content);外的语句。try/catch由于您的方法是 throwing IOException,因此您不应该抓住它。下面应该解决它:

public ByteArrayResource readFile() throws IOException {
    try (S3Object object = amazonS3.getObject(new GetObjectRequest(bucketName, key))) {
        byte[] content = IOUtils.toByteArray(object.getObjectContent());
        return new ByteArrayResource(content);
    }
}

推荐阅读