1
resposta

Prática do bloco finally

Gostaria de exemplos práticos onde se faz necessário ou não o finally, pois ainda não estou seguro se entendi corretamente ou não.

1 resposta

Olá Jonathan, imagine um cenário onde você precise que algo seja executado independentemente se ocorrer algum erro durante o processo que que está inserido dentro do block try.

Ele é comumente utilizado para fechar algum recurso que foi aberto durante a execução de algum processo, evitando que um eventual erro desvie o fluxo da aplicação e o recurso permaneça aberto de forma desnecessária.

Veja o exemplo abaixo, o metodo converte um InputStream para String, durante o processo é encessário criar um objeto chamado BufferedReader e utilizo o block finally para encerrar o BufferedReader indepenentemente de qualquer expcetion que possa ocorrer durante o processo:

public static String getStringFromInputStream(InputStream is) {
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return sb.toString();
    }