java.io.EOFException产生的原因以及解决方法

这篇具有很好参考价值的文章主要介绍了java.io.EOFException产生的原因以及解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01 异常发生场景

  • 使用ObjectInputStream类往文件中传入自定义类student时

ObjectInputStream objectInputStream=null;
        ArrayList<Student> students=null;
        try {
            objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt"));
            students = (ArrayList<Student>) objectInputStream.readObject();
            System.out.println("数据载入成功");
​
        }catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据载入失败");
        }

02 异常产生原因

  • 经过导师查找,终于发现了OFException产生的原因

  • ObjectInputStream objectInputStream=null;
    //idea上显示null为灰色,说明 new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt"));返回值为null,即文件"D:\\桌面\\java38\\javase08\\java08\\1.txt"为空
    objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt"));
  • objectInputStream为空值,则不能使用objectInputStream.close();如果使用会产生并发症 java.lang.NullPointerException(空指针异常)

03 异常解决

        ObjectInputStream objectInputStream=null;
        ArrayList<Student> students=null;
        try {
            objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt"));
            students = (ArrayList<Student>) objectInputStream.readObject();
            System.out.println("数据载入成功");
​
        } catch (EOFException e) {
            students = new ArrayList<>();
​
        }catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据载入失败");
        } finally {
            if(objectInputStream != null) {
                objectInputStream.close();
            }
  • 在finally语句内加上判断,不等于空值才关闭

  • 捕获EOFException,但不打印错误,为students,new一个新的集合(本来这里也有一个会出bug的地方,但是被我之前就给students赋了null值,(ArrayList<Student> students=null;)所以catch里new一个新的对象)

  • 如果不为空,则 students = (ArrayList<Student>) objectInputStream.readObject();正常执行,不报错误

04 总结

  • java.io.EOFException不是一个常出现的问题,而且并发症 java.lang.NullPointerException(空指针异常),只有objectInputStream.readObject();接收为null且1.txt文件为空时才会出现

  • EOFException只需要捕获,该bug在本场景下被捕获后程序就不会终止了,甚至不处理也行。文章来源地址https://www.toymoban.com/news/detail-700757.html

到了这里,关于java.io.EOFException产生的原因以及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java.io.EOFException: SSL peer shut down incorrectly jdk1.8不支持TSLv1.3问题解决

    使用 ResCU(Java (JAX-RS) rest 服务框架) 调用www.derbit.com 使用墙导致报错 本地环境 jdk adoptopenjdk-8.jdk 报错如下 首先看到是javax.net.ssl.SSLHandshakeException ,启动项增加-Djavax.net.debug=SSL,handshake deubg 输出日志排查 控制台输出如下 可看到日志No available cipher suite for TLS13 没有可用的TLSv1.3 协

    2023年04月14日
    浏览(42)
  • Error parsing HTTP request header java.io.EOFException: null

    问题: 我用postman请求就是正常的,但是用java的程序去请求就会报错这个: 2024-01-17 16:38:52.077 DEBUG [http-nio-8885-exec-1][org.apache.coyote.http11.Http11Processor]182 Error parsing HTTP request header java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1259) at o

    2024年01月21日
    浏览(45)
  • 502 Bad Gateway产生的原因以及8种详细的解决方法

    今天打开某网站时,却报出如下的错误信息: 即报出 502 Bad Gateway 的错误信息,这个错误信息是什么,又该如何解决呢? 接下来,我便详细分析。

    2023年04月14日
    浏览(81)
  • Android ANR产生的原因以及解决方式

    一、什么是ANR ANR是Android系统中的一种错误状态,全称为Application Not Responding,中文翻译为“应用无响应”。当Android系统检测到应用程序在一段时间内未能响应用户输入或无法执行主要的UI线程操作时,就会触发ANR错误。ANR是一种系统保护机制,旨在确保应用的响应性,防止用

    2024年04月26日
    浏览(32)
  • 浪涌电流Inrush Current产生原因以及解决方案

    1、对Inrush Current电流的直观感受 当电灯在电路中工作时,如果突然启动马达或者变压器时,会出现电灯暗一下,此时电灯出现暗的情况就是因为马达或者变压器启动时,在电路中产生较大Inrush Current,具体分析可以参考下图: 当马达刚开始上电时,转子是静止的,处于正要启

    2024年02月03日
    浏览(41)
  • 僵尸进程的产生原因和解决方法

    当一个进程(通常是父进程)创建了一个子进程,但是在子进程终止后,父进程没有及时处理子进程的终止状态,就会导致僵尸进程的产生。这个时候,子进程虽然已经终止,但是其进程表中的进程状态信息仍然被保留,直到父进程通过相关系统调用(如wait()或waitpid())来获

    2024年02月07日
    浏览(40)
  • 宽带连接错误代码678介绍、产生原因和解决方法

    宽带错误代码678怎么回事? 分析一下宽带错误代码678是什么原因. 简介 宽带ADSL拨号上网用户经常会碰到“错误678”的故障提示:一直上网正常,但某一天突然上不了了,拨号连接时出现“错误678”等提示,一般用户对这种故障是束手无策,有的还怀疑是不是密码被盗了? 原因

    2024年02月07日
    浏览(51)
  • 有关HikariPool-1 – Failed to validate connection com.mysql.cj.jdbc.ConnectionImp 错误的产生原因与解决方法

    如果长时间静默没有数据库操作就报Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@72b70c61 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.的错误 分析是hikari 连接池对连接管理的问题 解决方案 在yml配置文件中的datasource中添加如下解决。 ···

    2024年02月16日
    浏览(36)
  • 电脑开机后进不了系统?原因以及解决方法

    在日常使用电脑的过程中,我们有时候会遇到电脑开机后进不了系统的情况,这是令人十分烦恼的事情。那么,这种情况的出现可能是由于什么原因呢? 接下来,本文将为您介绍电脑开机后无法进入系统的原因以及解决方法。 演示机型:神舟战神G9-CU7PK 系统版本:Windows 10

    2024年02月08日
    浏览(41)
  • 飞鱼星路由链路异常的原因以及解决方法

    对路由器的链路,相信大家一定很了解了,这里就不啰嗦了,本篇主要给大家解决路由器链路一侧连接正常,另一侧不正常的故障,组网环境为飞鱼星路由器,相信对你一定有所帮助的。   一、组网环境 路由器A与路由器B通过多模光纤互连,运行一段时间后出现路由器A一侧

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包