Exceção saindo de close () em try-with-resource
Eu estava lendo sobre o try-with-resource no JDK7 e enquanto eu estava pensando em atualizar meu aplicativo para rodar com o JDK7 eu enfrentei esse problema ..
Ao usar um BufferedReader, por exemplo, a gravação gera IOException e o fechamento gera IOException. No bloco catch, estou preocupado com a IOException lançada pela gravação ... mas eu não me importo muito com a que é lançada pelo fechamento.
Mesmo problema com conexões de banco de dados .. e qualquer outro recurso ..
Como exemplo, criei um recurso de fechamento automático:
public class AutoCloseableExample implements AutoCloseable {
public AutoCloseableExample() throws IOException{
throw new IOException();
}
@Override
public void close() throws IOException {
throw new IOException("An Exception During Close");
}
}
Agora, ao usá-lo:
public class AutoCloseTest {
public static void main(String[] args) throws Exception {
try (AutoCloseableExample example = new AutoCloseableExample()) {
System.out.println(example);
throw new IOException("An Exception During Read");
} catch (Exception x) {
System.out.println(x.getMessage());
}
}
}
Como posso distinguir entre essas exceções sem ter que criar wrappers para classes como BufferedReader?
Na maioria dos casos, eu coloco o recurso perto de um try / catch dentro do bloco finally sem me importar muito em lidar com ele.