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

时间:2011-10-30 13:23:48

标签: java servlets file-io

我有一个简单的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();
        }

    }


}

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

如何将错误输出到网页?

2 个答案:

答案 0 :(得分:5)

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

你也完全吞下主代码中抛出的任何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();
  }
}

请注意,如果try块引发了{em>和 finally块的异常,您将有效地“丢失”原始异常。 可能想要在关闭时禁止抛出异常。

或者只使用Guava,无论如何都会使Files类更加简单。

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

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

答案 1 :(得分:0)

你也可以用catch块写:writer.write(errorMessage);

或者如果发生错误,您可以重定向到错误页面