【发布时间】:2012-04-01 14:11:03
【问题描述】:
在 finally 子句中编写 try 和 catch 是否被认为是糟糕的编程?
我的 main 方法中有一个我想关闭的 fileInputStream。 我想将 .close() 放在最后,所以无论如何它都会关闭。我不想在 main 方法中添加 throws 声明,因为它是 main 方法:P
}finally{
try {
commandFile.close();
} catch (IOException e) {
throwException(e);
}
}
还好吗? 谢谢
【问题讨论】:
-
是的,这没关系,有时是必要的。
-
如果你只是要重新抛出异常,你不需要 try catch。 try catch 是必要的,因为你应该对异常做一些事情(至少,记录它),如果你决定不这样做,那就没有必要了。
-
如果你问我,这是一个不好的做法。它使代码难以阅读和冗长。这种结构给 Java 带来了坏名声。
-
通常,您希望在整个 try-finally (以及资源获取)周围使用 try-catch。 Execute Around Idiom 是一种避免重复此类事情的便捷方法(尽管它过于冗长,可能直到 Java SE 8 为止)。