协助编写servlet的文件编写器方法

Bla*_*man 0 java file-io servlets

我有一个简单的servlet,如果它有一个查询参数'hello',我写一个文件,因为这是一个测试,我想在网页上也显示错误.

IntelliJ抱怨我没有捕获IOException,不知道出了什么问题:

private static void WriteToFile(String filePath, String fileName, String fileData) {

    FileWriter writer = null;

    try {
        writer = new FileWriter(fileName);
        writer.write(fileData);
    } catch(IOException ex) {


    } finally {
        if(writer != null) {
            writer.close();
        }

    }


}
Run Code Online (Sandbox Code Playgroud)

另外,在我的例外情况中,我注意到大多数人在网上写道:

如何将错误输出到网页?

Jon*_*eet 5

IOException当你writer.close();在finally块中调用时,你没有捕获.

你也完全吞下IOException了主代码中抛出的任何内容,这是一个非常糟糕的主意.如果出现问题,你将不知道发生了什么.

我个人建议您让该方法将异常抛给调用者:

private static void writeToFile(String filePath, String fileName,
                                String fileData) throws IOException {
  FileWriter writer = new FileWriter(fileName);
  try {    
    writer.write(fileData);
  } finally {
    writer.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果try块抛出一个异常,并finally块呢,你会有效地"丢失"的原始异常.您可能希望在关闭时禁止抛出异常.

或者只是使用Guava,无论如何都要使用它的Files类更简单.

或者,如果您使用的是Java 7,则可以使用try-with-resources语句.

(我注意到你忽略filePath了 - 为什么?)