1

来自 Java API

公共类EOFException扩展了 IOException

表示输入期间意外到达文件结尾或流结尾。

此异常主要由数据输入流用来表示流结束。请注意,许多其他输入操作在流结束时返回一个特殊值,而不是引发异常。

那么为什么数据输入流与其他输入操作如此不同呢?为什么它不像其他输入操作一样返回一个特殊的值来表示流的结束?因为我认为异常应该只用于非常特殊的情况。

4

1 回答 1

2

需要一个带外返回值来发出 EOS 信号。返回原语时使用所有带内值,因此没有可用的带外值,因此它必须是一个例外。

同样适用于ObjectInput.readObject()null是一个带内值,所以它不能用来表示 EOS。

这与 不同InputStream.read(),后者返回 -1 或字节值 -128..127。在这种情况下,-1 是带外的。

一个假设readUTF()抛出EOFException与其他方法对称,尽管它可能在 EOS 返回 null。

于 2013-05-13T01:12:24.820 回答