2
respostas

Qual a função dos parênteses no try with resources?

Eu entendi que implementamos a interface Autocloseable na nossa classe, porém não ficou claro pra mim a função do termo entre parênteses do try. O que está ocorrendo dentro dos parênteses? O código será lido normalmente ou testado como os dentro da chave?

2 respostas

Olá, boa noite! O termo entre parênteses nada mais é do que o objeto que implementa a interface AutoCloseable, quando passamos esse objeto entre parênteses no try, estamos "pedindo" para que a própria Máquina Virtual Java assuma a responsabilidade de fechar a conexão. No caso, o código dentro dos parênteses não será testado, ou seja, se o construtor da classe lançar uma exception, ela não vai ser tratada pelo try-catch e a execução será interrompida. Por exemplo:

try (Scanner scanner = new Scanner(System.in);) {
        // Implementação qualquer
} catch (Exception e) {
        // Tratamento da exceção
}

A vantagem de usar o try com resources é que não precisamos colocar um bloco finally depois, além de que não há o risco de nós esquecermos de fechar a conexão. É importante lembrar que se ocorrer um erro na hora de instanciar a váriavel scanner, a execução vai ser interrompida mesmo assim. Espero ter ajudado!

Resumo, cria um objeto da classe no momento do try e o fechamento (close) é garantido devido o implents do AutoCloseable, vc nao precisa chamar o metodo close, ele executa por conta da interface espero ter ajudado um pouco mais