这是我的代码,非常简单且重点:
public void sendMessage(String message)
{
writer.println(message);
writer.flush();
}
我不太喜欢使用 PrintWriter 因为它往往会吞下 IOExceptions,这实际上是我使用它除了发送字节数组之外的唯一用途。我可以使用什么来代替不会消耗 IOExceptions 并且仍然会给我 PrintWriter 的功能?
这是我的代码,非常简单且重点:
public void sendMessage(String message)
{
writer.println(message);
writer.flush();
}
我不太喜欢使用 PrintWriter 因为它往往会吞下 IOExceptions,这实际上是我使用它除了发送字节数组之外的唯一用途。我可以使用什么来代替不会消耗 IOExceptions 并且仍然会给我 PrintWriter 的功能?
我建议使用普通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
你想要保留什么功能。
如果您想保留 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。在此处的 javadocs 中阅读有关它们的更多信息