在java中处理EOFException

时间:2015-02-20 19:05:55

标签: java exception exception-handling inputstream eof

我有以下功能。我希望循环继续,直到消息等于"您已成功登录!"。但是当用户输入错误的输入(无效的用户名或密码)时,由于EOFException,循环无限循环。我怎么解决这个问题? 谢谢。

 private void processConnection() throws IOException
    {
        boolean eofReached = false;
        String message;
        do
        {
            try 
            {
                message = (String)input.readObject();
                if(message.equals("You have successfully logged in!"))
                {
                    displayMessage(String.format("\n%s ", message));
                    logged = true;
                    prepareUI();
                } 
                else
                {
                    displayMessage(String.format("\n%s %s", message, "\nTry again!") );
                }
            } 
            catch (ClassNotFoundException | EOFException  ex) 
            {
                  System.out.printf("\nend of registering");
                //  Logger.getLogger(ClientJFrame.class.getName()).log(Level.SEVERE, null, ex);
                  //eofReached = true;
            }        
             cout("registering");       
        } while(!logged && !eofReached);
    }

2 个答案:

答案 0 :(得分:0)

在您的代码示例中,您似乎拥有了所需的一切。只需取消注释您设置eofReached的行。

答案 1 :(得分:0)

我发现了自己的错误。问题是服务器中没有这样的相应循环来回答所有请求。这就是我获得例外的原因。