【发布时间】:2019-09-05 01:48:41
【问题描述】:
从一本 Java 书籍中看到以下代码
public void writeFile(String fileName, String content){
File file = new File(fileName);
try {
try (PrintWriter output = new PrintWriter(new FileWriter(file))) {
output.println(content);
output.println();
output.println("End of writing");
}
System.out.println("File been written successfully");
} catch (IOException ex) {
ex.printStackTrace(System.out);
}
}
上面的代码没有任何问题,我根本看不出嵌套try 没有定义内部catch 块的意义。还是有什么我错过的目的?
修改后的代码:
public void writeFile(String fileName, String content){
File file = new File(fileName);
try (PrintWriter output = new PrintWriter(new FileWriter(file))) {
output.println(content);
output.println();
output.println("End of writing");
System.out.println("File been written successfully");
} catch (IOException ex) {
ex.printStackTrace(System.out);
}
}
【问题讨论】:
-
内部try会自动关闭PrintWriter的资源,从jdk 9开始可以不用finally或者catch就可以try
-
@Deadpool:也就是说,在jdk 9之前,开发者通常要在
finally块中手动关闭它? -
是的,完全是@Isaac,基本上你可以一次性完成所有这些,不需要内部
-
我认为你可以使用内部捕获没有多大意义。
标签: java oop exception io try-catch