Tipos de erro integrados
O JavaScript define vários tipos de erro, todos descendentes de Error:
| Tipo | Quando aparece |
|---|---|
Error |
Erro genérico |
TypeError |
Um valor não é do tipo esperado (ex.: chamar algo que não é função) |
RangeError |
Um valor está fora do intervalo permitido |
SyntaxError |
Código malformado (ex.: JSON inválido) |
ReferenceError |
Usar uma variável que não existe |
Você pode verificar o tipo com instanceof:
try {
null.metodo();
} catch (e) {
console.log(e instanceof TypeError); // true
}
Erros personalizados
Para erros específicos do seu domínio (por exemplo, "saldo insuficiente"), crie
uma classe que estenda Error:
class SaldoInsuficienteError extends Error {
constructor(mensagem) {
super(mensagem);
this.name = "SaldoInsuficienteError";
}
}
throw new SaldoInsuficienteError("Você não tem saldo suficiente");
Isto permite diferenciar seus erros dos do sistema e tratá-los de forma
específica no catch.
Exemplos
Um erro personalizado
class ValidacaoError extends Error {
constructor(mensagem) {
super(mensagem);
this.name = "ValidacaoError";
}
}
try {
throw new ValidacaoError("Campo obrigatório");
} catch (e) {
console.log(e.name + ": " + e.message);
console.log("É um Error?", e instanceof Error);
}