【发布时间】:2010-04-17 10:21:43
【问题描述】:
我遇到了一个关于 findbugs 的严重错误:
该方法创建一个 IO 流对象,不将其分配给任何字段,将其传递给其他方法或将其返回,并且似乎不会在方法外的所有可能异常路径上关闭它。这可能会导致文件描述符泄漏。通常最好使用 finally 块来确保流已关闭。
try {
...
stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
...
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (stdError != null) {
stdError.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
我还需要关闭InputStreamReader 还是p.getErrorStream(它返回InputStream)?
【问题讨论】: