日期:2014-05-20  浏览次数:20701 次

为何会有这个异常
最近作程序,出现一种异常我不太明白:

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。

------解决方案--------------------
没有读出内容,就是null噻,
检查你服务端发送过程是不是和客户端读取过程相对.
------解决方案--------------------
可以仔细的分析一下,看看哪里出错了,要相信自己有这个实力,`~~~~
这样对你以后的工作有很大的帮助,呵可,~~~
------解决方案--------------------
因为 dis.readUTF() 这个方法是一个阻塞性的方法.在每一次读完后它还是会在那里等着接收数据. 也就是说每一次你从服务器端发数据,当发完一个数据后,就不再发数据了.可客户端那边还是在等着你的数据,而且还在读取数据.所以读到的就是空值了. 不知道我说的对不对.请大家指教.
------解决方案--------------------
看看你的服务器代码吧,发送,接收就放在一个循环里的