0

"Exception in thread "Thread-2" java.lang.NullPointerException at client.Client.run(Client.java:32)" を取得しています 32 行目は、以下の switch ステートメント行です。スイッチは列挙型メソッドにあります。エラーは、スレッドの 1 つが他のスレッドよりも高速になっているためだと思いますが、よくわかりません...ここで十分なコードを提供したことを願っています。

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);
    }
4

1 に答える 1

0

エラーがそのスイッチ行にある場合、明らかな理由はswitch (null)、別名、receiveMessage()戻り値 NULL を実行していて、それを予期していないことのようです (スイッチのすぐそこにあるため)。

それが であることを確認しNULL、その場合に必要なことをすべて実行するか (例外、何も、依存:) )、またはその関数を修正して、NULLもう返されないようにします..

于 2013-09-04T12:57:55.453 に答える