java.io.EOFException產(chǎn)生原因及解決方法(附代碼)
01 異常發(fā)生場(chǎng)景
使用ObjectInputStream類(lèi)往文件中傳入自定義類(lèi)student時(shí)
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("數(shù)據(jù)載入成功");
?
? ? ? }catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?System.out.println("數(shù)據(jù)載入失敗");
? ? ? }02 異常產(chǎn)生原因
經(jīng)過(guò)導(dǎo)師查找,終于發(fā)現(xiàn)了OFException產(chǎn)生的原因
ObjectInputStream objectInputStream=null;
//idea上顯示null為灰色,說(shuō)明 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();如果使用會(huì)產(chǎn)生并發(fā)癥 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("數(shù)據(jù)載入成功");
?
? ? ? } catch (EOFException e) {
? ? ? ? ? ?students = new ArrayList<>();
?
? ? ? }catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?System.out.println("數(shù)據(jù)載入失敗");
? ? ? } finally {
? ? ? ? ? ?if(objectInputStream != null) {
? ? ? ? ? ? ? ?objectInputStream.close();
? ? ? ? ? }在finally語(yǔ)句內(nèi)加上判斷,不等于空值才關(guān)閉
捕獲EOFException,但不打印錯(cuò)誤,為students,new一個(gè)新的集合(本來(lái)這里也有一個(gè)會(huì)出bug的地方,但是被我之前就給students賦了null值,(ArrayList<Student> students=null;)所以catch里new一個(gè)新的對(duì)象)
如果不為空,則 students = (ArrayList<Student>) objectInputStream.readObject();正常執(zhí)行,不報(bào)錯(cuò)誤
04 總結(jié)
java.io.EOFException不是一個(gè)常出現(xiàn)的問(wèn)題,而且并發(fā)癥 java.lang.NullPointerException(空指針異常),只有objectInputStream.readObject();接收為null且1.txt文件為空時(shí)才會(huì)出現(xiàn)
EOFException只需要捕獲,該bug在本場(chǎng)景下被捕獲后程序就不會(huì)終止了,甚至不處理也行。
到此這篇關(guān)于java.io.EOFException產(chǎn)生原因及解決的文章就介紹到這了,更多相關(guān)java.io.EOFException解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot一個(gè)接口多個(gè)實(shí)現(xiàn)類(lèi)的調(diào)用方式總結(jié)
這篇文章主要介紹了SpringBoot一個(gè)接口多個(gè)實(shí)現(xiàn)類(lèi)的調(diào)用方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
Java接口的簡(jiǎn)單定義與實(shí)現(xiàn)方法示例
這篇文章主要介紹了Java接口的簡(jiǎn)單定義與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了java面向?qū)ο蟪绦蛟O(shè)計(jì)中接口的概念、功能、定義及使用技巧,需要的朋友可以參考下2019-01-01
Java創(chuàng)建可執(zhí)行JAR文件的多種方式
本文主要介紹了Java創(chuàng)建可執(zhí)行JAR文件的多種方式,使用JDK的jar工具、IDE、Maven和Gradle來(lái)創(chuàng)建和配置可執(zhí)行JAR文件,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
Spring中@Autowired和@Resource注解的使用區(qū)別詳解
這篇文章主要介紹了Spring中@Autowired和@Resource注解的使用區(qū)別詳解,@Autowired默認(rèn)根據(jù)type進(jìn)行注入,找到與指定類(lèi)型兼容的?Bean?并進(jìn)行注入,如果無(wú)法通過(guò)type匹配到對(duì)應(yīng)的?Bean?的話,會(huì)根據(jù)name進(jìn)行匹配,如果都匹配不到則拋出異常,需要的朋友可以參考下2023-11-11
MySQL如何設(shè)置自動(dòng)增長(zhǎng)序列SEQUENCE的方法
本文主要介紹了MySQL如何設(shè)置自動(dòng)增長(zhǎng)序列SEQUENCE的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
java并發(fā)編程synchronized底層實(shí)現(xiàn)原理
這篇文章主要介紹了java并發(fā)編程synchronized底層實(shí)現(xiàn)原理2022-02-02
Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實(shí)現(xiàn)
這篇文章主要介紹了Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

