我想知道,为什么refill()
在数据块中间发现意外的EOF时会抛出StreamCorrruptedException
? (ObjectInputStream.java:2538
)
如果它抛出EOFException
或者在这种情况下抛出StreamCorrruptedException
会有不同的理由会不会更好?
答案 0 :(得分:1)
到达格式良好的流的末尾到达流 mid-object 的末尾之间有区别。如果我正在读取具有未知数量的对象的流,我可以继续调用readObject()
直到获得EOFException,并且我知道我已经成功读取了所有内容。如果readObject()
是读取对象的一部分,我得到相同的异常,我不知道最后一个对象是否已损坏。