由于Java支持异常,我认为尝试读取输入流末尾的字节时会抛出EOFException
,例如byte read() throws EOFException, IOException
但实际上InputStream#read返回
下一个数据字节;如果到达流的末尾,则返回-1。
这使我想起了C中的getchar
。但是另一方面,它会引发
IOException
:如果发生I / O错误。
为什么要这样设计?
最佳答案
许多早期的API都不尽人意,并且有很多讨论,设计师希望他们可以做一些不同的事情。
我推测这不是其中一种情况。引发“ EOFException”可能会鼓励程序员try
进行读取,直到捕获到异常为止。意味着异常处理将用作控制程序逻辑的一种方式,称为异常处理反模式