Try-with-resources ou Try/Catch finally

Java

22/06/2017

Pessoal,

existe alguma vantagem de uma dessas opções em relação à outra?

Qual opção vocês utilizam quando estão implementando os métodos de um DAO? Try-with-resources ou Try/Catch finally?
Augusto Santos

Augusto Santos

Curtidas 0

Melhor post

Estevão Dias

Estevão Dias

23/06/2017

Oi Augusto, tudo certo?

O TWR é usado quando você precisa que um recurso seja fechado quando o comando/escopo for finalizado. Digamos que você esteja realizando uma ação com um BufferedReader. Ao escolher esta forma:

try (BufferedReader br =
        new BufferedReader(new FileReader(path))) {
    return br.readLine();
}


Você delega aos mecanismos da linguagem a tarefa de encerrar o recurso. Já com finally você seria o agente responsável por esse fechamento, geralmente verificando a validade da inicialização.

BufferedReader br = new BufferedReader(new FileReader(path));
    try {
        return br.readLine();
    } finally {
        if (br != null) br.close();
    }


Lembrando que só podemos adicionar no bloco de inicialização um objeto que implemente java.lang.AutoCloseable ou java.io.Closeable.

Um abraço.
GOSTEI 2

Mais Respostas

Marcio Souza

Marcio Souza

22/06/2017

Try-with-resources é um recurso que surgiu no Java 7 e faz desnecessário o uso do bloco finally em um try/finally ou até mesmo em um try/catch/finally.
Mas só é possível quando utilizado no bloco finally um objeto que implemente a interface Closeable, que por sua vez estende a interface AutoCloseable.
Então, se estiver ok, não vejo problemas em não usar.
GOSTEI 1
POSTAR