Exceções personalizadas e rethrow
Defina erros significativos e lance-os novamente.
Exceções personalizadas e rethrow é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 4 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.
Erros com significado
Exceções genéricas ocultam a intenção. Uma exceção personalizada identifica o problema exato, tornando as falhas compreensíveis em todo o aplicativo. 🏷️
Implementando uma exceção
Crie uma classe que implementa uma exceção. Isso a identifica como um tipo de erro lançável que o Dart e os leitores reconhecem imediatamente.
class PaymentException implements Exception {}Transportando uma mensagem
Forneça à sua exceção um campo de mensagem por meio do construtor, para que os manipuladores possam ler por que ela ocorreu.
class PaymentException implements Exception {
final String message;
PaymentException(this.message);
}Um toString amigável
Substitua toString para que a impressão da exceção mostre uma frase clara em vez de apenas o nome da classe.
@override
String toString() => 'PaymentException: $message';Lançando sua própria exceção
Lance uma exceção personalizada exatamente como uma exceção integrada. Use lançar com uma nova instância quando uma regra for violada.
throw PaymentException('Card declined');Capturando pelo seu tipo
Capture sua exceção com uma cláusula de tipo, assim como os tipos integrados, para tratar esse caso especificamente.
try {
pay();
} on PaymentException catch (e) {
print(e);
}Às vezes não é possível corrigir
Um manipulador pode registrar um erro, mas não conseguir resolvê-lo. Em vez de ignorá-lo, você pode encaminhá-lo usando o relançamento.
A palavra-chave de relançamento
Relançamento lança a exceção atual novamente, preservando o rastreamento original da pilha para que os chamadores vejam onde ela realmente começou.
catch (e) {
log(e);
rethrow;
}Relançamento supera o lançamento da exceção
Escrever lançamento da exceção redefine o rastreamento da pilha; o relançamento o mantém intacto. Sempre prefira relançar ao lançar novamente dentro de uma captura.
Registre e repasse
Um padrão comum: capture para registrar a falha e depois relance a exceção, para que uma camada superior decida como se recuperar.
catch (e) {
logger.error(e);
rethrow;
}Adicionando campos úteis
Exceções personalizadas podem armazenar dados extras, como um código ou um valor que falhou, oferecendo aos manipuladores um contexto mais rico para agir.
class ApiException implements Exception {
final int code;
ApiException(this.code);
}Verificação rápida
Por que usar o relançamento em vez de lançar a exceção dentro de uma captura?
Recapitulação
Agora você pode criar exceções significativas que implementam exceção, transportam dados e usam o relançamento para encaminhar as falhas de forma limpa. 🚀
Perguntas Frequentes
A aula “Exceções personalizadas e rethrow” é grátis?
Sim — o texto completo de “Exceções personalizadas e rethrow” é 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 “Exceções personalizadas e rethrow”?
Defina erros significativos e lance-os novamente. 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 4 de 4.
Quanto tempo leva a aula “Exceções personalizadas e rethrow”?
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