欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java.io.EOFException產(chǎn)生原因及解決方法(附代碼)

 更新時(shí)間:2023年09月20日 11:03:14   作者:夢(mèng)囈  
java.io.EOFException表示在讀取數(shù)據(jù)時(shí)突然遇到了文件或流的末尾,也就是說客戶端或服務(wù)器已經(jīng)關(guān)閉了連接,但是你還在嘗試讀取數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于java.io.EOFException產(chǎn)生原因及解決的相關(guān)資料,需要的朋友可以參考下

01 異常發(fā)生場景

使用ObjectInputStream類往文件中傳入自定義類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)過導(dǎo)師查找,終于發(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();如果使用會(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語句內(nèi)加上判斷,不等于空值才關(guān)閉

  • 捕獲EOFException,但不打印錯(cuò)誤,為students,new一個(gè)新的集合(本來這里也有一個(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)的問題,而且并發(fā)癥 java.lang.NullPointerException(空指針異常),只有objectInputStream.readObject();接收為null且1.txt文件為空時(shí)才會(huì)出現(xiàn)

EOFException只需要捕獲,該bug在本場景下被捕獲后程序就不會(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)類的調(diào)用方式總結(jié)

    SpringBoot一個(gè)接口多個(gè)實(shí)現(xiàn)類的調(diào)用方式總結(jié)

    這篇文章主要介紹了SpringBoot一個(gè)接口多個(gè)實(shí)現(xiàn)類的調(diào)用方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Java接口的簡單定義與實(shí)現(xiàn)方法示例

    Java接口的簡單定義與實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Java接口的簡單定義與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了java面向?qū)ο蟪绦蛟O(shè)計(jì)中接口的概念、功能、定義及使用技巧,需要的朋友可以參考下
    2019-01-01
  • Java創(chuàng)建可執(zhí)行JAR文件的多種方式

    Java創(chuàng)建可執(zhí)行JAR文件的多種方式

    本文主要介紹了Java創(chuàng)建可執(zhí)行JAR文件的多種方式,使用JDK的jar工具、IDE、Maven和Gradle來創(chuàng)建和配置可執(zhí)行JAR文件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • SpringBoot2 集成測試組件的七種方法

    SpringBoot2 集成測試組件的七種方法

    下面圍繞幾個(gè)自己開發(fā)過程中常用的測試工具和手段,做簡單的總結(jié),不在于對(duì)比方式的好壞,存在即合理,在不同場景中對(duì)合理手段的選擇,快速解決問題才是根本目的。
    2021-06-06
  • Spring中@Autowired和@Resource注解的使用區(qū)別詳解

    Spring中@Autowired和@Resource注解的使用區(qū)別詳解

    這篇文章主要介紹了Spring中@Autowired和@Resource注解的使用區(qū)別詳解,@Autowired默認(rèn)根據(jù)type進(jìn)行注入,找到與指定類型兼容的?Bean?并進(jìn)行注入,如果無法通過type匹配到對(duì)應(yīng)的?Bean?的話,會(huì)根據(jù)name進(jìn)行匹配,如果都匹配不到則拋出異常,需要的朋友可以參考下
    2023-11-11
  • MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法

    MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法

    本文主要介紹了MySQL如何設(shè)置自動(dòng)增長序列SEQUENCE的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java并發(fā)編程synchronized底層實(shí)現(xiàn)原理

    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)

    這篇文章主要介紹了Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解ZXing-core生成二維碼的方法并解析

    詳解ZXing-core生成二維碼的方法并解析

    本文給大家介紹ZXing-core生成二維碼的方法并解析,主要用到goggle發(fā)布的jar來實(shí)現(xiàn)二維碼功能,對(duì)此文感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • 關(guān)于Java?SE數(shù)組的深入理解

    關(guān)于Java?SE數(shù)組的深入理解

    數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是相同類型的若干個(gè)數(shù)據(jù),按照一定的先后次序排列組合而成,下面這篇文章主要給大家介紹了關(guān)于Java?SE數(shù)組的深入理解,需要的朋友可以參考下
    2022-09-09

最新評(píng)論