【发布时间】:2015-10-21 22:05:16
【问题描述】:
在 Rational Application Developer(基于 Eclipse 的 RAD)中,在软件分析器下,我看到代码审查注释(在 Performance =>Memory 部分下)说“避免在 finally 中使用 throw 语句”。
在 finally 块中定义 throw 对性能有何影响?
这里是代码sn-p,我们已经建议改代码来记录异常跟踪,不要抛出异常,
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (final IOException ex) {
throw ex;
}
}
}
我只是想知道这会如何影响内存和性能?
【问题讨论】:
-
你到底为什么要在
finally块中抛出异常? 不要这样做。永远。 -
如果您有两个对象需要清理,
A和B,但清理A已经引发异常,缺少清理B可能会造成内存泄漏。但这只是猜测。在 finally 块中抛出异常不是一个好主意,但内存问题不是我的首要原因。 -
@BoristheSpider 最简单的
finally块,{ stream.close(); }涉及声明抛出IOException的方法调用。所以看起来每个人都在这样做。 -
catch (final IOException ex) { throw ex; }-- 这段代码毫无意义。删除它,您的行为完全相同。
标签: java performance exception exception-handling