Shouldn't this finally block be on the outer try? There doesn't seem to be a point to the inner try. I guess you are trying to handle the exception thrown by close, but this is the wrong structure to do that correctly (need to catch within the finally block and log the error). As is this leaves a case where getEntry() throws an exception where the zipFile isn't closed.