Tratamento de erros em código assíncrono
Use try/catch com await com segurança.
Tratamento de erros em código assíncrono é 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.
Futures podem falhar
O trabalho assíncrono pode dar errado: um servidor pode exceder o tempo limite ou um arquivo pode estar ausente. Um Future pode ser concluído com um erro em vez de um valor.
try e catch com await
Envolva um await em try/catch, e um Future com falha lançará o erro exatamente nessa linha, assim como erros síncronos comuns.
try {
final data = await fetch();
} catch (e) {
print("failed: $e");
}Capturando tipos específicos
Use uma cláusula on para tratar precisamente um tipo de erro, enquanto permite que outras falhas continuem subindo sem serem alteradas.
try {
await load();
} on TimeoutException {
print("too slow");
}Inspecionando o erro
Adicione catch (e, s) para obter tanto o objeto de erro quanto seu rastreamento da pilha, o que facilita muito a depuração de falhas assíncronas.
catch (e, s) {
print(e);
print(s);
}finally sempre é executado
Um bloco finally é executado independentemente de o await ter sido concluído com sucesso ou ter lançado um erro; por isso, é o lugar certo para fechar arquivos ou parar indicadores de carregamento.
try {
await save();
} finally {
closeFile();
}Lançando um erro de async
Use throw dentro de uma função async, e o Future retornado será simplesmente concluído com esse erro, pronto para ser capturado por quem o chamou.
Future<int> risky() async {
throw StateError("nope");
}Erros em cadeias de then
Sem await, associe catchError a um Future para tratar uma falha em uma cadeia no estilo de then.
fetch().then(use).catchError(handle);Recuperando com um padrão
Em catchError ou catch, você pode retornar um valor de fallback, permitindo que o programa continue de forma adequada após uma falha.
Erros de Future não tratados
Um Future com falha que é ignorado se transforma em um erro não capturado, que pode encerrar o aplicativo ou gerar registros de erro excessivos. Sempre capture ou aguarde seus Futures.
Relançando quando necessário
Use rethrow dentro de um catch para registrar uma falha aqui e ainda permitir que um manipulador externo também a trate.
catch (e) {
log(e);
rethrow;
}await dentro de finally
Você pode até usar await dentro de finally para realizar uma limpeza assíncrona, como esvaziar um buffer, antes que a função retorne.
Verificação rápida
Verificação rápida sobre a captura de erros assíncronos.
Recapitulação: erros assíncronos
Você aprendeu a proteger await com try/catch, direcionar tipos com on, fazer a limpeza em finally e recuperar ou relançar erros. 🛡️
Perguntas Frequentes
A aula “Tratamento de erros em código assíncrono” é grátis?
Sim — o texto completo de “Tratamento de erros em código assíncrono” é 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 “Tratamento de erros em código assíncrono”?
Use try/catch com await com segurança. 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 “Tratamento de erros em código assíncrono”?
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
- O loop de eventos e as microtarefas
- Criar e aguardar Futures
- Tratamento de erros em código assíncrono
- Future.wait e trabalho paralelo