Cursos / Eletrônica / Programação Orientada a Objetos / Aula

arrow_back Aula 12 - Lançamento de Exceções

Relembrando!

Vimos na aula anterior por que o tratamento de exceções é importante para que possamos criar programas robustos e tolerante a falhas. Aprendemos que as exceções são todas subclasses de Throwable. Vimos também como um método informa ao compilador que ele poderá causar risco (cláusula throws), e a sintaxe básica para capturar e tratar uma exceção (bloco try/catch). Agora, vamos um pouco mais a fundo no tratamento de exceções... chegou a hora de virar gente grande! Vamos lá então... mãos à obra!

Cláusula Finally: para as coisas que você deseja fazer não importa como.

Lembra que no capítulo anterior vimos a sintaxe básica do bloco try/catch? Pois então, ele ainda quarda algumas cartas na manga para combater as exceções do mundo Java. E para que serve essa danada dessa cláusula finally? Vou contar uma breve historinha para que possamos entender melhor o seu sentido.

Imagine que você esta tentando cozinhar alguma coisa, você tem que primeiramente ligar o fogão, certo? Ok, supondo que o alimento preparado tenha queimado! Você terá que desligar o fogão! Poxa, sou um péssimo cozinheiro! É verdade! Mas agora suponha que você tem visto muito Ana Maria Braga e está craque na cozinha e o que você fez ficou uma maravilha, como fica na televisão, você ainda tem que desligar o fogão no final de tudo!

Perceba que não importa qual for o resultado, FALHA ou SUCESSO, você sempre terá que realizar a mesma ação ao final do processo. É no bloco finally que colocaremos o código que deverá rodar, não importa o que aconteça.

Então, vamos dar uma olhada na sintaxe:

Qual a vantagem de termos o bloco finally nesta situação? Alguém se arrisca? Sem o finally temos que colocar o método desligarFogao() em dois locais, primeiro dentro do bloco try, para o caso em que tudo ocorra como o esperado, e outra vez dentro do bloco catch, caso alguma exceção seja lançada. Em resumo, o bloco finally permite que coloquemos todos os nossos códigos de limpeza em um único local, ao invés de duplicarmos como no exemplo a seguir:


Desafio!

Se dentro de um bloco TRY ou CATCH tivesse um ‘return’ em seu corpo, o que aconteceria? O bloco finally ainda sim executaria, ou seria ignorado? Pense... ao final deste assunto falaremos a resposta!

Agora, vamos dar uma pausa para colocarmos em prática o que aprendemos até agora, então, vamos lá, mãos a obra! E continue pensando no nosso Desafio!

Versão 5.3 - Todos os Direitos reservados