我的程序一直向我抛出nullPointerException,我不知道为什么。我想可能是因为bufferedReader的原因,但我不确定。
String line = reader.readLine();
while (!line.isEmpty()) {
line = repairLine(line);
tree.add(line);
line = reader.readLine();
}是的,它被包装在try - catch块中。它说问题在while-line上。它不适用于"if (line != null)“。我真的不知道是什么导致了这种情况。谢谢你的帮助。
发布于 2015-03-13 23:13:01
问题似乎出在以下几行代码中:
String line = reader.readLine();
while (!line.isEmpty()) {
}如果没有要从文件中读取的内容,则line将为null。因此while循环中的异常。您正在尝试调用空引用上的方法。
也就是说,从文件中读取行的传统方法是将读取的行分配给while条件本身中的一个变量(未测试的代码):
String line = "";
while ((line=reader.readLine()!=null) && !line.isEmpty()) {
line = repairLine(line);
tree.add(line);
}发布于 2021-04-18 04:11:52
我也遇到过同样的错误,这意味着连接的另一个客户端上的套接字正在关闭,而它正在尝试读取服务器上的数据。
为了添加一些上下文,我正在运行一台服务器,并且各种客户端都通过java套接字连接到它。当客户端关闭套接字时,我在服务器端遇到了这个错误。
因此,为了解决这个问题,我决定在每次连接后同时关闭服务器端和客户端的套接字。我这样做的方式是在客户端关闭之前,它在关闭套接字之前向服务器发送"quit“消息。当服务器读取“退出”消息时,它也将关闭其套接字。
例如:
if(Quit){
if(mySocket != null && !mySocket.isClosed()) {
output.println("quit");
output.flush();
try {
mySocket.close();
} catch (IOException e) {
System.out.println("Close net variables exception - " + e.getMessage());
}
}
}String line = input.readLine(); //Thread stops here untill it reads something
if(line.equals("something")){
do_something();
else if(line.equals("quit")){
try {
mySocket.close();
} catch (IOException e) {
System.out.println("Close net variables exception - " + e.getMessage());
}
else{
do_default();
}对我很管用,希望对我有帮助!
https://stackoverflow.com/questions/29035681
复制相似问题