Classe de erro customizada
Em APIs e sistemas reais, diferentes erros exigem tratamentos diferentes. Criar classes de erro customizadas permite que você identifique e trate cada tipo de falha separadamente — como validar formulários com ValidationError ou capturar falhas de rede com NetworkError. Isso torna o código mais limpo e fácil de depurar.
O PROBLEMA
Crie classes ValidationError, NotFoundError, NetworkError. Cada uma com código específico.
EXEMPLO
class ValidationError extends Error {
constructor(campo, msg) {
super(msg);
this.name = "ValidationError";
this.campo = campo;
}
}SOBRE O CONCEITO
Para criar uma classe de erro customizada, você estende a classe Error e chama super(message) no construtor para definir a mensagem. Depois, atualiza this.name com o nome da classe. Um erro comum é esquecer super(message), o que deixa this.message vazio. Outro erro é não alterar this.name, fazendo com que o erro herde o nome "Error" da classe pai. Você também pode adicionar propriedades extras, como this.statusCode ou this.code. Por exemplo: class ValidationError extends Error { constructor(campo, msg) { super(msg); this.name = "ValidationError"; this.campo = campo; } }. Use throw new ValidationError('email', 'Inválido') para lançar e if (err instanceof ValidationError) para capturar. As palavras-chave permitidas são class, extends, super, constructor, this, new, throw e instanceof. Evite usar function ou objetos literais para criar erros.
RESOLUÇÃO