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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
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();
}