Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
来自 Java API
公共类EOFException扩展了 IOException 表示输入期间意外到达文件结尾或流结尾。 此异常主要由数据输入流用来表示流结束。请注意,许多其他输入操作在流结束时返回一个特殊值,而不是引发异常。
公共类EOFException扩展了 IOException
表示输入期间意外到达文件结尾或流结尾。
此异常主要由数据输入流用来表示流结束。请注意,许多其他输入操作在流结束时返回一个特殊值,而不是引发异常。
那么为什么数据输入流与其他输入操作如此不同呢?为什么它不像其他输入操作一样返回一个特殊的值来表示流的结束?因为我认为异常应该只用于非常特殊的情况。
需要一个带外返回值来发出 EOS 信号。返回原语时使用所有带内值,因此没有可用的带外值,因此它必须是一个例外。
同样适用于ObjectInput.readObject()。null是一个带内值,所以它不能用来表示 EOS。
ObjectInput.readObject()
null
这与 不同InputStream.read(),后者返回 -1 或字节值 -128..127。在这种情况下,-1 是带外的。
InputStream.read()
一个假设readUTF()抛出EOFException与其他方法对称,尽管它可能在 EOS 返回 null。
readUTF()
EOFException