我在client.Client.run(Client.java:32)中获得“线程中的异常”Thread-2“java.lang.NullPointerException”第32行是下面的switch语句行。该开关采用枚举方法。我认为错误来自其中一个线程比另一个更快,但我不确定...我希望我已经提供了足够的代码,如果不是我会添加更多让我知道我需要添加的内容。
public void run() {
while (running) {
try {
switch (receiveMessage()) {
case SERVER_HELLO:
expectingServerHello = true;
break;
//other cases
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public ServerMessages receiveMessage() throws IOException {
String sentence;
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromServer.readLine();
return MessageSerialize.fromServerMessage(sentence);
}
答案 0 :(得分:0)
如果错误发生在该切换线上,显而易见的原因似乎是你正在进行switch (null)
,也就是说,你的receiveMessage()
返回NULL,而你并不期望(因为你)但它正好在转换中。
要么检查它是NULL
,并在这种情况下做任何你想要的事情(异常,没有,依赖:)),或修复该函数,以便它再也不会返回NULL
..