4

我正在使用FindBugsAnt 分析我在 Eclipse 中的代码。

以下片段给出RV_RETURN_VALUE_IGNORED_BAD_PRACTICE

RV:方法忽略异常返回值 (RV_RETURN_VALUE_IGNORED_BAD_PRACTICE)

此方法返回一个未检查的值。应该检查返回值,因为它可能表示异常或意外的函数执行。例如,如果文件无法成功删除(而不是抛出异常),则 File.delete() 方法返回 false。如果您不检查结果,您将不会注意到方法调用是否通过返回非典型返回值来发出意外行为的信号。

public void export (File file) throws IOException {
    if (!file.exists()) {
        file.createNewFile();
    }

    BufferedWriter bw = null;
    try {
        bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()));
    ...

实际上我不在乎文件存在与否,该方法应该继续执行。如果发生异常,它将被抛出export()

如何重写此代码段,因此不显示警告/错误,而不在 Findbugs 配置文件中禁用它?

4

2 回答 2

5

在这种特殊情况下,您不必调用file.createNewFile(),因为文件无论如何都会由FileWriter.

但是,您必须确保该文件的父文件夹存在。

于 2013-03-08T07:53:02.123 回答
4

f.createNewFile();返回boolean

如果命名文件不存在且已成功创建,则为 true ;如果命名文件已经存在,则返回false

将方法更改为boolean result = f.createNewFile();

如果您不关心文件是否存在,您可能应该更改代码以排除检查exists直接创建BufferedWriter将在文件不存在时创建文件。此外,如果您仍想使用当前代码添加SuppressWarnings忽略警告。

于 2013-03-08T07:48:11.457 回答