有人可以向我解释为什么socket.close()
会在Java中引发IOException
吗?我真的无法弄清楚关闭套接字与告诉运行时如何正确处理以及清理套接字所持有的资源有什么不同。还有另一种不泄漏内存和清理我不知道的套接字资源的方法吗?
答案 0 :(得分:4)
事实证明,在很多情况下,现有错误可以传递给调用代码的唯一时间是调用close()
时。例如,如果您发送了一个已被接收计算机拒绝的UDP数据包,那么您下次使用该套接字时,唯一可能需要了解它。如果下次使用该套接字是关闭它,那就是当你得到异常时。 请注意,不的例外情况会阻止套接字关闭,这似乎就是您所要求的。
答案 1 :(得分:2)
一个案例......尚未打开的套接字。