EOFException的处理

 

eofexception

以前也遇到过这种问题,在流传输过程中是不允许被并发访问的。所以数据能接连不断的传过来,其实有很多人在运行的时候都会碰到eofexception, 然后百思不得其解,去各种论坛问解决方案。其实我想说,这个异常不是必须声明的,也就是说它虽然是异常,但其实是正常运行结束的标志。EOF表示读到了文件尾( String str = dis.readUTF(); ,客户端已经断开,后面已经没有内容可以读了),发送结束自然连接也就断开了。

如果这影响到了你socket程序的正确性的话,请你静下心来看看自己程序的业务逻辑,而不要把注意力聚集在发送和接受的方法上。因为我也被这样的bug困扰了1整天,被很多论坛的帖子误解了很多次最后得出的教训。如果在while循环中去readUTF() ,本质上是没有问题的,有数据来就会读,没有就自动阻塞。那么抛出EOFException一定是因为连接断了还在继续read,什么原因导致连接断了呢?一定是业务逻辑哪里存在错误,比如NullPoint、 ClassCaseException、ArrayOutofBound,即使程序较大也没关系,最多只要单步调适一次就能很快发现bug并且解决它。

如果你是第一种,你客户端已经被你断开,你可以捕捉这个客户端断开的异常EOFExcption,然后做你需要的处理,try … catch(EOFException){ System.out.println(“这是合法的,客户端已经关闭”);}

用到了socket的话,你的客户端每次在传输完你的数据后,再传输一个null过去,就行了。不然就报EOF异常。

原文地址:http://www.cnblogs.com/qoyi/archive/2012/02/28/2371451.html

PS:我遇到该异常是因为所传输文件为空,所以自然就断开了,因为无内容可读取。是可以忽略的异常。

相关阅读

记一个异常java.io.EOFException: No content to map

一个提供rest接口的服务出现了以下的异常:[WARN ] 2018-04-16 14:10:02,919 –http-nio-8090-exec-9– [org.jboss.resteasy.core.

我的JAVA学习之异常整理-java.io.EOFException

产生原因:UTF是双字节编码,而writeChars方法写入的是按照字符格式写入的,在文件中的占位要小于以Unicode编码的同样字符串,所以,使用re

EOFException 的问题处理

近期工作中, 遇到了有送EOFException的抛出, 以此小节总结学习相关内容, 及如何解决问题。 问题描述 doUnZip(FileOperateUtil.java

EOFException异常详解

最近线上的系统被检测出有错误日志,领导让我检查下问题,我就顺便了解了下这个异常。了解一个类,当然是先去看他的API,EOFException的A

发表评论