java.util.zip.ZipFile.close()什么时候抛出IOException?

sk.*_*sk. 6 java zip ioexception

在什么情况下java.util.zip.ZipFile.close()会抛出IOException?它的方法签名表明它可以被抛出,但是从源代码中似乎没有任何可能发生这种情况的地方,除非它是在本机代码中.如果有异常,可以采取哪些纠正措施?

Asa*_*aph 7

来自API文档ZipFile.close():

关闭此ZIP文件将关闭先前由getInputStream方法调用返回的所有输入流.

InputStream.close()抛出IOException,所以ZipFile.close()必须把它扔到了.根据API文档InputStream.close(),它会抛出IOException"如果发生I/O错误".这不是很具描述性,但它正在广泛展示.InputStreams可以表示来自文件系统,网络,内存等的流.InputStreams可能涉及需要刷新的缓冲区,需要关闭的套接字,需要释放的资源,需要释放的锁等等.IOExceptions可以发生的原因有很多.