最近作程序,出现一种异常我不太明白:while (!stop) {
String str = dis.readUTF();//这一行if (str != null) {
......}} 这是客户端读信息的代码,服务端用dos.writeUTF()方法写信息;客户端第一次读信息没有问题,可是第二次执行的时候,一运行到标注的行,就会抛IOException异常,用e.getMessage方法看了一下,居然是空的。查了一下api文档:the error message string of this Throwable object if it was created with an error message string; or null if it was created with no error message.我不太明白,既然no error message,为什么还会抛异常,还是null。

解决方案 »

  1.   

    没有读出内容,就是null噻,
    检查你服务端发送过程是不是和客户端读取过程相对.
      

  2.   

    因为 dis.readUTF() 这个方法是一个阻塞性的方法.在每一次读完后它还是会在那里等着接收数据. 也就是说每一次你从服务器端发数据,当发完一个数据后,就不再发数据了.可客户端那边还是在等着你的数据,而且还在读取数据.所以读到的就是空值了. 不知道我说的对不对.请大家指教.