为什么EOFException主要由数据输入流使用?
来自Java API
公共类EOFException扩展了IOException
表示在输入期间意外到达文件末尾或流末尾的信号。
此exception主要由数据输入流用于信号流的结束。 请注意, 许多其他输入操作在流的末尾返回特殊值而不是抛出exception。
那么为什么数据输入流与其他输入操作有如此不同呢? 为什么它不像其他输入操作那样返回特殊值来表示流的结束? 因为我认为exception只应用于非常特殊的情况。
需要带外返回值来表示EOS。 返回基元时使用所有带内值,因此没有可用的带外值,因此它必须是例外。
这同样适用于ObjectInput.readObject()
。 null
是带内值,因此不能用于向EOS发送信号。
这与InputStream.read()
不同,后者返回-1或字节值-128..127。 在这种情况下,-1是带外的。
一个假设readUTF()
抛出EOFException
与其他方法对称,尽管它可能在EOS返回null。
- class not found exception com.mysql.jdbc.driver
- 如何在java中传播exception
- MediaSession finishBroadcast()exception
- 索引越界错误
- 何时在Java中使用exception(示例)
- 使用try-with-resources静静地关闭资源
- 更新Apache POI 4.0后 – 无法识别属性“http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit”
- 向调用方法抛出错误!
- ibatis spring java.lang.NoSuchMethodError com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse