当前位置: 首页 > 知识库问答 >
问题:

FileWriter问题-必须捕获未报告的IOEXception

卞轶
2023-03-14
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

共有1个答案

花品
2023-03-14

好办法:

System.console().printf("Enter the file directory you would like to store in");
String location = System.console().readLine();
try (FileWriter writer = new FileWriter (location)) {
  writer.write("Stuff");
} catch (IOException e) {
  new RuntimeException("Error message", e).printStackTrace();
}

解释:

  1. system.console().printf()启用在stdout上打印消息。system.out可能更好,因为并不严格要求有“控制台”。
  2. 使用system.console()进行控制台管理。简单明了多了。不要忘记分配控制台(不要使用javaw可执行文件)。
  3. 使用try-with-resources语句打开流
  4. printStackTrace()在stderr上打印调用堆栈,这样可以方便地查找代码中的错误位置。
  5. 我生成了一个新的异常,将错误消息与堆栈跟踪一起附加。
  6. 添加堆栈中的“catch”位置。
    null
 类似资料: