来自Java API
公共类 EOFException 扩展IOException
表示已到达文件结尾或流结束 输入期间意外。
此异常主要由数据使用 输入流以表示流的结束。请注意许多其他输入 操作在流的末尾返回特殊值而不是 抛出异常。
那么为什么数据输入流与其他输入操作有如此不同?为什么它不像其他输入操作一样返回特殊值来表示流的结尾?因为我认为异常只应用于特殊情况。
答案 0 :(得分:2)
需要带外返回值来表示EOS。返回基元时使用所有带内值,因此没有可用的带外值,因此必须是例外。
同样适用于ObjectInput.readObject()
。 null
是一个带内值,因此不能用于表示EOS。
这与InputStream.read()
不同,readUTF()
返回-1或字节值-128..127。在这种情况下,-1是带外的。
假设EOFException
抛出{{1}}与其他方法对称,尽管它可能在EOS返回null。