gpt4 book ai didi

java - 是否接受在 try block 中关闭资源?

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:50 25 4
gpt4 key购买 nike

一本关于 Java 的初学者书籍中有以下代码。这本书也很好地解释了异常,并且由于我了解异常是如何工作的,所以我对以下代码有疑问。

由于某些原因,如果 FileWriter 类抛出异常,writer.close() 将不会被执行。因此我认为关闭 writer 对象的最佳位置是在 finally block 中。甚至在此之前,我已经看到许多这样编写的代码,其中资源将在 try block 本身中关闭。我认为这样做没有意义。只有在没有异常的情况下,资源才会被关闭。

我错了吗?在 java 中关闭资源的最佳方法是什么?我们不应该编写如下代码吗?

 public static void main(String[] args) {

try{
FileWriter writer = new FileWriter("file.txt");
writer.write("i am writing");
writer.close();
}catch(IOException e){
ex.printStackTrace();
}

}

最佳答案

我同意@cyber-rookie 的观点,最好在 finally block 中关闭资源。

Java 7 引入了“try-with-resources”以减少编程错误...

https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

你现在可以写...

    try (FileWriter writer = new FileWriter("file.txt")) {
writer.write("i am writing");
} catch (IOException e) {
e.printStackTrace();
}

编译器会在代码块的末尾添加额外的代码来关闭编写器

关于java - 是否接受在 try block 中关闭资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29650468/

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