【发布时间】:2015-12-30 03:32:20
【问题描述】:
我在 Java 中尝试使用 FileWriter 写入文件时遇到了问题。简单地声明 FileWriter writer = new FileWriter("filelocation"); 会产生一个必须捕获的未报告的 IOException。
为了纠正这个问题,我自然地将我的 FileWriter 放在 try-catch 块中,但这会导致范围问题。为了解决这个问题,我尝试在 try catch 块之前声明 FileWriter 并在 try catch 中分配位置。当我想使用 FileWriter 时,在 try catch 块之后,它告诉我它可能尚未初始化。我不确定如何处理这个问题,并且在 Java 1.7 或类似版本中从未遇到过这个问题。
这是我最后情况的一个例子,以防我不清楚;
Scanner userInput = new Scanner(System.in);
FileWriter writer;
try {
System.out.println("Enter the file directory you would like to store in");
String fileLocation = userInput.nextLine();
writer = new FileWriter(fileLocation);
} catch(java.io.IOException e) {
System.out.println("Error message");
}
writer.write("Stuff"); //writer may not have been initialized
【问题讨论】:
-
这是预期行为。你需要在构造函数调用下的try块中执行
writer.write。 -
问题在于我的实际代码中,在我使用编写器之前还有大约 90 行代码。我认为将所有内容都放在 try 块中是不好的做法。我在这方面错了吗?顺便说一句,这似乎是一种奇怪的预期行为。如果在 try catch 中初始化 FileWriter 时出错,它会在抛出错误时退出该方法,因此永远不会调用 writer.write。我对 1.8 的看法完全不同了!
-
Jason:它在 try 块中在语义上是正确的。但是,更合适的是try-with-resources。
-
好的,我来看看。我应该能够按照您告诉我的内容对其进行排序,非常感谢您!
-
Java
FileWriter自 1997 年以来已抛出IOExceptions。这不是“Java 1.8 的问题”。
标签: java exception java-io filewriter