O objeto Error: mais detalhes sobre o que deu errado
Descubra como o objeto Error fornece informações valiosas para depuração.
Quando algo falha no JavaScript, o sistema gera um “relatório” do problema.
Esse relatório é o objeto Error.
Pense no Error como um boletim de ocorrência do seu código:
ele diz o que aconteceu, onde aconteceu e ajuda você a corrigir mais rápido.
O que é o objeto Error?
Error é um objeto nativo do JavaScript usado para representar falhas.
Você pode:
- receber erros automaticamente (quando algo quebra),
- ou criar erros manualmente com
new Error(...).
Exemplo:
const erro = new Error("Algo deu errado");
console.log(erro);
Propriedades mais úteis
error.name
Mostra o tipo do erro (ex.: Error, TypeError, ReferenceError).
error.message
Mostra a mensagem explicando a falha.
error.stack
Mostra o “caminho” de chamadas até o erro (stack trace).
Exemplo:
try {
throw new Error("Falha ao salvar usuário");
} catch (erro) {
console.log("name:", erro.name);
console.log("message:", erro.message);
console.log("stack:", erro.stack);
}
Criando erros personalizados com throw
Você pode validar regras e lançar erro quando necessário:
function cadastrarIdade(idade) {
if (idade < 18) {
throw new Error("Idade mínima é 18");
}
return "Cadastro permitido";
}
Isso ajuda a deixar regras de negócio mais claras.
Tipos nativos de erro (filhos de Error)
Além de Error, existem tipos específicos:
TypeErrorReferenceErrorSyntaxErrorRangeErrorURIError
Exemplo:
throw new TypeError("Esperado texto, mas veio número");
Usar tipo específico facilita o diagnóstico.
Tratamento por tipo de erro
Você pode tratar de formas diferentes no catch:
try {
throw new TypeError("Formato inválido");
} catch (erro) {
if (erro instanceof TypeError) {
console.log("Erro de tipo:", erro.message);
} else {
console.log("Outro erro:", erro.message);
}
}
Criando sua própria classe de erro (nível intermediário)
Quando o projeto cresce, pode fazer sentido criar erros personalizados:
class ValidacaoError extends Error {
constructor(message) {
super(message);
this.name = "ValidacaoError";
}
}
try {
throw new ValidacaoError("E-mail obrigatório");
} catch (erro) {
console.log(erro.name); // ValidacaoError
console.log(erro.message); // E-mail obrigatório
}
Boas práticas com Error
- Use mensagens claras e objetivas.
- Não esconda erro silenciosamente.
- Use
try...catchonde há risco real (parse, API, validação). - Para o usuário: mensagem amigável.
- Para você/dev: detalhes técnicos no log.
Resumo da lição
- O objeto
Errortraz contexto sobre falhas no código. - Propriedades importantes:
name,message,stack. throw new Error(...)permite criar erros de forma controlada.- Tipos específicos e erros personalizados ajudam a depurar melhor.