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在本场景下被捕获后程序就不会终止了,甚至不处理也行。
到此这篇关于java.io.EOFException产生原因及解决的文章就介绍到这了,更多相关java.io.EOFException解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中关键字final finally finalize的区别介绍
这篇文章主要给大家分享的是 Java中final,finally,finalize 到底有什么区别,文章围绕final,finally,finalize的相关资料展开详细内容,具有一定的参考的价值,需要的朋友可以参考一下2022-04-04
新建springboot项目时,entityManagerFactory报错的解决
这篇文章主要介绍了新建springboot项目时,entityManagerFactory报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01


最新评论