As exceções lançadas no bloco finalmente suprimem a exceção lançada anteriormente no bloco try ou catch.
Exemplo do Java 7: http://ideone.com/0YdeZo
Do exemplo de Javadoc :
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
No entanto, neste exemplo, se os métodos readLine e fechar os dois lançarem exceções, o método readFirstLineFromFileWithFinallyBlock lançará a exceção lançada no bloco final; a exceção lançada do bloco try é suprimida.
A nova try-with
sintaxe do Java 7 adiciona outra etapa de supressão de exceção: as exceções lançadas no bloco try suprimem as lançadas anteriormente na parte try-with.
do mesmo exemplo:
try (
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
) {
for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {
String newLine = System.getProperty("line.separator");
String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine;
writer.write(zipEntryName, 0, zipEntryName.length());
}
}
Uma exceção pode ser lançada do bloco de código associado à instrução try-with-resources. No exemplo acima, uma exceção pode ser lançada no bloco try e até duas exceções podem ser lançadas na instrução try-with-resources quando ela tenta fechar os objetos ZipFile e BufferedWriter. Se uma exceção for lançada no bloco try e uma ou mais exceções forem lançadas na instrução try-with-resources, essas exceções lançadas na instrução try-with-resources serão suprimidas e a exceção lançada pelo bloco será a única que é lançado pelo método writeToFileZipFileContents. Você pode recuperar essas exceções suprimidas chamando o método Throwable.getSuppressed da exceção lançada pelo bloco try.
No código da pergunta, cada bloco descarta claramente a exceção antiga, nem mesmo registra, não é boa quando você está tentando resolver alguns erros:
http://en.wikipedia.org/wiki/Error_hiding