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

關(guān)于java.io.EOFException產(chǎn)生的原因以及解決方案

 更新時間:2025年01月23日 14:26:27   作者:宣布無人罪  
文章總結(jié):EOFException異常通常發(fā)生在嘗試從空的ObjectInputStream對象中讀取數(shù)據(jù)時,解決方法是在finally語句中添加判斷,確保objectInputStream不為空后再進行關(guān)閉操作,在處理1.txt文件為空的情況時,捕獲EOFException可以避免程序終止,并且不會拋出空指針異常

java.io.EOFException產(chǎn)生的原因及解決

異常發(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ù)載入失敗");
        }

異常產(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(空指針異常)

異常解決

        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,但不打印錯誤,為students,new一個新的集合(本來這里也有一個會出bug的地方,但是被我之前就給students賦了null值,(ArrayList<Student> students=null;)所以catch里new一個新的對象)

如果不為空,則

students = (ArrayList<Student>) objectInputStream.readObject();

正常執(zhí)行,不報錯誤~

總結(jié)

java.io.EOFException不是一個常出現(xiàn)的問題,而且并發(fā)癥 java.lang.NullPointerException(空指針異常),只有objectInputStream.readObject();接收為null且1.txt文件為空時才會出現(xiàn)

EOFException只需要捕獲,該bug在本場景下被捕獲后程序就不會終止了,甚至不處理也行。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot使用swagger生成api接口文檔的方法詳解

    SpringBoot使用swagger生成api接口文檔的方法詳解

    在之前的文章中,使用mybatis-plus生成了對應(yīng)的包,在此基礎(chǔ)上,我們針對項目的api接口,添加swagger配置和注解,生成swagger接口文檔,需要的可以了解一下
    2022-10-10
  • Springboot項目引入druid安裝部署使用教程

    Springboot項目引入druid安裝部署使用教程

    這篇文章主要介紹了Springboot項目引入druid安裝部署使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot基于Mybatis攔截器和JSqlParser實現(xiàn)數(shù)據(jù)隔離

    SpringBoot基于Mybatis攔截器和JSqlParser實現(xiàn)數(shù)據(jù)隔離

    本文將介紹如何在 Spring Boot 項目中利用Mybatis的強大攔截器機制結(jié)合JSqlParser,一個功能豐富的 SQL 解析器,來輕松實現(xiàn)數(shù)據(jù)隔離的目標,本文根據(jù)示例展示如何根據(jù)當前的運行環(huán)境來實現(xiàn)數(shù)據(jù)隔離,需要的朋友可以參考下
    2024-04-04
  • SpringBoot與Angular2的集成示例

    SpringBoot與Angular2的集成示例

    本篇文章主要介紹了SpringBoot與Angular2的集成示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java寫入寫出Excel操作源碼分享

    Java寫入寫出Excel操作源碼分享

    這篇文章主要介紹了Java寫入寫出Excel操作源碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • JavaWeb中的組件Filter過濾器解析

    JavaWeb中的組件Filter過濾器解析

    這篇文章主要介紹了JavaWeb中的組件Filter過濾器解析,Filter過濾器是一種用于處理和轉(zhuǎn)換數(shù)據(jù)的工具,常用于Web開發(fā)中,它可以在請求到達服務(wù)器之前或響應(yīng)返回給客戶端之前對數(shù)據(jù)進行預處理或后處理,需要的朋友可以參考下
    2023-10-10
  • JpaRepository?實現(xiàn)簡單條件查詢

    JpaRepository?實現(xiàn)簡單條件查詢

    這篇文章主要介紹了JpaRepository?實現(xiàn)簡單條件查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot日志文件的實現(xiàn)示例

    SpringBoot日志文件的實現(xiàn)示例

    日志是程序中的重要組成部分,使用日志可以快速的發(fā)現(xiàn)和定位問題,本文主要介紹了SpringBoot日志文件的實現(xiàn)示例,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • java 基礎(chǔ)教程之多線程詳解及簡單實例

    java 基礎(chǔ)教程之多線程詳解及簡單實例

    這篇文章主要介紹了java 基礎(chǔ)教程之多線程詳解及簡單實例的相關(guān)資料,線程的基本屬性、如何創(chuàng)建線程、線程的狀態(tài)切換以及線程通信,需要的朋友可以參考下
    2017-03-03
  • Spring集成MongoDB的兩種方法實例

    Spring集成MongoDB的兩種方法實例

    最近使用到了Spring框架,考慮到數(shù)據(jù)的格式并非有固定的字段格式,因此考慮到使用MongoDB非關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù),所以這篇文章主要給大家介紹了Spring集成MongoDB的兩種方法,需要的朋友可以參考下
    2021-09-09

最新評論