gpt4 book ai didi

java - 尝试在 finally 部分中捕获

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:54 25 4
gpt4 key购买 nike

在 finally 子句中编写 try 和 catch 是否被认为是糟糕的编程?

我在我的主要方法中有一个我想关闭的 fileInputStream。我想将 .close() 放在最后,所以无论如何它都会关闭。我不想在 main 方法中添加 throws 声明,因为它是 main 方法 :P

    }finally{
try {
commandFile.close();
} catch (IOException e) {
throwException(e);
}
}

还好吗?谢谢

最佳答案

不幸的是,在 finally 方法中需要 try/catches 的模式在 Java 6 及之前的版本中反复出现。我认为这实际上是一种不好的做法,但不是您可以在 Java 6 中真正避免的做法(请参阅下面的 Java 7)。

另一个问题是,在 finally block 中抛出的任何新异常都将覆盖在到达此 block 之前抛出的异常。

在 Java 7 中,专门针对需要关闭资源的情况(try/finally/try/catch 构造的大多数用例)新的 try-with-resources 构造。这还将捕获主要和次要异常。

因此,使用此构造现在是 JDK 7 中的最佳实践,是的,您显示的代码因此在 Java 7 中是一种不良实践。

关于java - 尝试在 finally 部分中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com