Como sempre que tratamos uma exceção ela não "explode" e continuamos executando código, não seria mais simples não usar o bloco finally e colocar nosso código que será executado após o bloco try/catch?
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!
Como sempre que tratamos uma exceção ela não "explode" e continuamos executando código, não seria mais simples não usar o bloco finally e colocar nosso código que será executado após o bloco try/catch?
Olá, Guilherme.
Tudo bem?
O ponto principal do finally é garantir que um determinado bloco de código seja executado independentemente de uma exceção ter sido lançada ou não. Quando você usa apenas try e catch, você precisa repetir o código que deve ser executado tanto no caso de sucesso quanto no caso de falha. Isso pode levar à duplicação de código, o que não é uma boa prática, pois dificulta a manutenção e aumenta a chance de erros. Veja um exemplo:
try {
funcaoQuePodeLancarExcecao();
echo "Executou";
// Código que deve ser sempre executado
echo "Finalizou!";
} catch (\Exception $e) {
echo "Deu erro!";
// Código que deve ser sempre executado
echo "Finalizou!";
}
No exemplo acima, a linha echo "Finalizou!"; precisa ser escrita duas vezes, uma no bloco try e outra no catch, para garantir que ela seja executada independentemente de uma exceção ocorrer ou não.
Agora, veja como o uso do finally simplifica isso:
try {
funcaoQuePodeLancarExcecao();
echo "Executou";
} catch (\Exception $e) {
echo "Deu erro!";
} finally {
// Código que deve ser sempre executado
echo "Finalizou!";
}
Com o finally, você coloca o código que deve ser sempre executado apenas uma vez, no bloco finally. Isso não só evita a duplicação, mas também torna o código mais limpo e fácil de manter.
Espero ter entendido e conseugido ajudar. Bons estudos!