这是我的代码,我的代码非常简单,重点:
public void sendMessage(String message)
{
writer.println(message);
writer.flush();
}
我真的不喜欢使用PrintWriter,因为它倾向于吞下IOExceptions,这实际上是我用它除了发送字节数组之外唯一的东西。我可以使用哪些不会消耗IOExceptions并仍然会给我PrintWriter的功能?
答案 0 :(得分:4)
我建议使用普通Writer
或BufferedWriter
public void writeMessage(BufferedWriter bw, String message) throws IOException {
bw.write(message);
bw.newline();
bw.flush();
}
或
public void writeMessage(Writer writer, String message) throws IOException {
writer.write(message);
writer.write(System.lineSeparator());
writer.flush();
}
但显然这取决于你想要保留PrintWriter
的功能。
答案 1 :(得分:2)
如果要保留PrintWriter并检查是否发生了异常,可以使用PrintWriter的checkError()方法来执行此操作。例如,使用您自己的代码:
public void sendMessage(String message)
{
try{
writer.println(message);
}finally{
//checkError flushes the stream if it's not closed and checks its error state.
if(writer.checkError()){
//Your error handling code here
}
}
}
另一种方式是使用BufferedReader,正如@Thilo在他的评论中所建议的那样。它将再次取决于您希望保留的功能。
如果您使用BufferedWriter的实例,您将使用write()方法,这会抛出IOException。 Read more about them in the javadocs here