我有一个简单的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();
}
}
}
此外,在我的例外情况中,我在网上注意到大多数人写道:
如何将错误输出到网页?
答案 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);
或者如果发生错误,您可以重定向到错误页面