【发布时间】:2013-01-21 07:46:12
【问题描述】:
我有这段代码,就是写一个Ojbect到一个字节数组流中:
static byte[] toBytes(MyTokens tokens) throws IOException {
ByteArrayOutputStream out = null;
ObjectOutput s = null;
try {
out = new ByteArrayOutputStream();
try {
s = new ObjectOutputStream(out);
s.writeObject(tokens);
} finally {
try {
s.close();
} catch (Exception e) {
throw new CSBRuntimeException(e);
}
}
} catch (Exception e) {
throw new CSBRuntimeException(e);
} finally {
IOUtils.closeQuietly(out);
}
return out.toByteArray();
}
但是,FindBugs 一直在抱怨 line:
s = new ObjectOutputStream(out);
“可能无法关闭流” - BAD_PRACTICE - OS_OPEN_STREAM。有人可以帮忙吗?
【问题讨论】:
-
如果你使用的是Java 7,你可以使用try-with-resources。
-
不幸的是,我被 Java 6 困住了
-
仅供参考 - 我无法让我的 FindBugs 抱怨您的代码。我正在使用最新的 FindBugs Eclipse,报告级别设置为 20(最不相关)并启用每个类别。您使用的是哪个版本的 FindBugs,您是如何执行它的?
-
我使用 Eclipse 3.7 和 Maven,因此使用了 findbugs-maven-plugin:2.5.2。使用“mvn site”运行它以报告错误。
标签: java stream findbugs software-quality