打开枚举方法线程错误

时间:2013-09-04 07:13:08

标签: java enums

我在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);
    }

1 个答案:

答案 0 :(得分:0)

如果错误发生在该切换线上,显而易见的原因似乎是你正在进行switch (null),也就是说,你的receiveMessage()返回NULL,而你并不期望(因为你)但它正好在转换中。

要么检查它是NULL,并在这种情况下做任何你想要的事情(异常,没有,依赖:)),或修复该函数,以便它再也不会返回NULL ..