0Pricing
Dart Academy · Aula

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

  1. throw, try e catch
  2. Cláusulas on e tipos de exceção
  3. finally e limpeza garantida
  4. Exceções personalizadas e rethrow
← Voltar para Dart Academy