java - 如何处理我给定代码中的 EOF 异常

标签 java android eofexception

try {
        FileInputStream fis = new FileInputStream(f);
        Log.d("Objects remaining; ", fis.available()+"");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Log.d("Objects remaining; ", fis.available() + "");
        Question question = (Question) ois.readObject();
        Log.d("FIS:",fis.toString());
        Log.d("OIS:",ois.toString());
    } catch (Exception e){
        e.printStackTrace();
    }

}

我不知道如何处理代码中给定的异常。

11-06 12:49:52.879  27005-27005/com.example.android.fileio D/Objects remaining;﹕ 4
11-06 12:49:52.880  27005-27005/com.example.android.fileio D/Objects remaining;﹕ 0
11-06 12:49:52.880  27005-27005/com.example.android.fileio W/System.err﹕ java.io.EOFException
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.DataInputStream.readByte(DataInputStream.java:77)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.nextTC(ObjectInputStream.java:505)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:752)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.example.android.fileio.MainActivity.makeFile(MainActivity.java:71)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.view.View.performClick(View.java:4756)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.view.View$PerformClick.run(View.java:19748)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5254)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

最佳答案

流上有 4 个字节可用。您的序列化 Question 对象可能会大于四个字节。我认为这会产生EOFException。您已通过打印堆栈跟踪来处理异常。您确定该文件包含您所期望的内容吗?

关于java - 如何处理我给定代码中的 EOF 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33561494/

相关文章:

android - 改造okhttp获取随机eofexception

android - 在刷新或登录 google plus 之前,AdMob 不会显示横幅

android - 如何将消息从单独的线程发送到 UI 线程?

java - 如何在eclipse juno中导入并运行ivy+ant项目

java - 在接口(interface)中编写类有什么用

android - ViewPager 内的 ScrollView

android - Facebook SDK 3 EOFException

java - 从 Java 中的 ObjectInputStream 中连续读取对象

java - java格式化int方法

java - 在添加到二叉搜索树之前对数组进行排序 Java