finally e limpeza garantida
Execute o código independentemente de ocorrer uma exceção.
finally e limpeza garantida é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
A limpeza deve sempre ser executada
Arquivos e conexões abertos devem ser fechados mesmo quando o código falha. O Dart oferece finally para uma limpeza que sempre acontece. 🧹
O bloco finally
Um bloco finally é executado depois de try e catch, independentemente do resultado. Com sucesso ou falha, seu código sempre é executado.
try {
work();
} finally {
cleanup();
}Executado após o sucesso
Se o bloco de tentativa termina sem erro, o Dart ainda executa a finalização logo depois, antes de prosseguir.
Executado após uma captura
Quando uma exceção é capturada, o bloco de captura é executado e, em seguida, a finalização também é executada. Ambas ocorrem nessa ordem.
try {
fail();
} catch (e) {
log(e);
} finally {
close();
}Executado mesmo sem captura
Use a tentativa somente com a finalização, sem captura. A exceção ainda se propaga, mas a limpeza é executada primeiro durante a saída.
try {
risky();
} finally {
release();
}Por que não simplesmente duplicar?
Sem a finalização, você copiaria a limpeza para os caminhos de sucesso e de erro. Um único bloco de finalização mantém tudo em um só lugar.
Limpeza antes de relançar
Mesmo quando uma exceção continua subindo sem ser capturada, a finalização ainda é executada primeiro, para que os recursos nunca sejam perdidos.
Fechando um arquivo com segurança
Um uso clássico: abra um recurso no bloco de tentativa, use-o e depois faça a finalização fechá-lo, independentemente de a leitura ter sido bem-sucedida.
try {
file.read();
} finally {
file.close();
}Evite retornar na finalização
Um retorno dentro da finalização substitui qualquer retorno ou exceção anterior. Use a finalização somente para limpeza, não para controlar o fluxo.
Ordem de execução
Lembre-se da sequência: a tentativa é executada, depois a captura se necessário e, por fim, a finalização. A limpeza sempre encerra o bloco.
Tentativa-captura-finalização completa
Isto combina os três elementos: trabalho protegido, tratamento de erros e limpeza garantida no bloco de finalização ao fim.
try {
open();
} catch (e) {
print(e);
} finally {
close();
}Verificação rápida
Quando um bloco de finalização é executado?
Recapitulação
Agora você usa a finalização para garantir uma limpeza executada em todos os caminhos: sucesso, erro capturado ou lançamento não capturado. Sem vazamentos. 🔒
Perguntas Frequentes
A aula “finally e limpeza garantida” é grátis?
Sim — o texto completo de “finally e limpeza garantida” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “finally e limpeza garantida”?
Execute o código independentemente de ocorrer uma exceção. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “finally e limpeza garantida”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- throw, try e catch
- Cláusulas on e tipos de exceção
- finally e limpeza garantida
- Exceções personalizadas e rethrow