java.io.EOFException產(chǎn)生原因及解決方法(附代碼)
01 異常發(fā)生場景
使用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("數(shù)據(jù)載入成功");
?
? ? ? }catch (Exception e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ?System.out.println("數(shù)據(jù)載入失敗");
? ? ? }02 異常產(chǎn)生原因
經(jīng)過導師查找,終于發(fā)現(xiàn)了OFException產(chǎn)生的原因
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();如果使用會產(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語句內加上判斷,不等于空值才關閉
捕獲EOFException,但不打印錯誤,為students,new一個新的集合(本來這里也有一個會出bug的地方,但是被我之前就給students賦了null值,(ArrayList<Student> students=null;)所以catch里new一個新的對象)
如果不為空,則 students = (ArrayList<Student>) objectInputStream.readObject();正常執(zhí)行,不報錯誤
04 總結
java.io.EOFException不是一個常出現(xiàn)的問題,而且并發(fā)癥 java.lang.NullPointerException(空指針異常),只有objectInputStream.readObject();接收為null且1.txt文件為空時才會出現(xiàn)
EOFException只需要捕獲,該bug在本場景下被捕獲后程序就不會終止了,甚至不處理也行。
到此這篇關于java.io.EOFException產(chǎn)生原因及解決的文章就介紹到這了,更多相關java.io.EOFException解決內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中關鍵字final finally finalize的區(qū)別介紹
這篇文章主要給大家分享的是 Java中final,finally,finalize 到底有什么區(qū)別,文章圍繞final,finally,finalize的相關資料展開詳細內容,具有一定的參考的價值,需要的朋友可以參考一下2022-04-04
新建springboot項目時,entityManagerFactory報錯的解決
這篇文章主要介紹了新建springboot項目時,entityManagerFactory報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
淺談SpringBoot內嵌Tomcat的實現(xiàn)原理解析
這篇文章主要介紹了淺談SpringBoot內嵌Tomcat的實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

