01 异常发生场景 使用ObjectInputStream类往文件中传入自定义类student时 ObjectInputStream objectInputStream=null; ArrayList students=n
使用ObjectInputStream类往文件中传入自定义类student时
ObjectInputStream objectInputStream=null; ArrayList students=null; try { objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt")); students = (ArrayList) objectInputStream.readObject(); System.out.println("数据载入成功"); }catch (Exception e) { e.printStackTrace(); System.out.println("数据载入失败"); }
经过导师查找,终于发现了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(空指针异常)
ObjectInputStream objectInputStream=null; ArrayList students=null; try { objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt")); students = (ArrayList) 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
如果不为空,则 students = (ArrayList
java.io.EOFException不是一个常出现的问题,而且并发症 java.lang.NullPointerException(空指针异常),只有objectInputStream.readObject();接收为null且1.txt文件为空时才会出现
EOFException只需要捕获,该bug在本场景下被捕获后程序就不会终止了,甚至不处理也行。
来源地址:https://blog.csdn.net/2302_77182979/article/details/132056706
--结束END--
本文标题: java.io.EOFException产生的原因以及解决方法
本文链接: https://lsjlt.com/news/398829.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0