gpt4 book ai didi

java - 为什么 InputStream.close() 声明抛出 IOException?

转载 作者:IT老高 更新时间:2023-10-28 21:12:54 26 4
gpt4 key购买 nike

java.io.InputStream.close()方法被声明为抛出 IOException。到底什么情况下会抛出这样的异常?

编辑:是的,我已经阅读了 javadoc。任何人都可以比“发生 I/O 错误时”更具体吗? 什么在关闭 InputStream 时会发生 I/O 错误?

最佳答案

在从文件系统读取输入流的情况下,当文件系统本身在关闭期间更新文件上的上次访问时间元数据或其他一些元数据时,可能会引发错误。无论如何,这在实践中几乎从未发生过。

在从网络连接读取输入流的情况下,关闭错误更容易想象。网络套接字的正常关闭实际上涉及通过连接发送关闭请求(TCP/IP FIN 数据包)并等待另一端确认此关闭请求。 (事实上​​,连接的另一端会依次发送一个关闭请求,关闭端确认该请求。)因此,对于套接字输入流,关闭操作实际上涉及通过连接发送流量,因此关闭可以因错误而失败。

请注意,在许多实现中,如果流已经关闭,close() 通常不会抛出 IOException;它只是默默地失败再次关闭流。

关于java - 为什么 InputStream.close() 声明抛出 IOException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com