Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarando erro customizado
  2. Métodos e propriedades
  3. Lançando e relançando

A linguagem JS permite que erros customizados sejam criados a partir de outras classes de erros existente. Nesta parte do tutorial vamos entender criar e lançar nossos próprios erros customizados.

Para acompanhar esta parte do tutorial, é necessário ter o conhecimento básico sobre P.O.O que que podem ser visto em JavaScript: P.O.O.

Para criarmos nossas próprias exceções precisamos criar uma classe que herda os métodos e propriedades da classe Error ou outra classe de erro desejada.

Sintaxe
class nome_erro extends Error
{
  //corpo
}

No construtor de nossa exceção customizada utilizamos um parâmetro para receber uma mensagem informativa do erro e chamamos o construtor super da classe que herdamos.

Sintaxe
public class nome_erro extends excecao_nativa
{
    constructor (mensagem)
    {
        super(mensagem);
    }
}

Chamando o construtor da classe que herdamos, podemos utilizar as propriedades name, message e stack e outros.

Exemplo 1
class meuErro extends Error
{
  constructor(mensagem)
  {
    super(mensagem);
  }
}
Saída
-

Os erros customizadas aceitam métodos e atributos assim como qualquer outra classe que criamos até agora. Tudo estudado sobre herança é aplicável.

Exemplo 2
class meuErro extends Error
{
  codigo; //atributo customizado
  constructor(mensagem,cod)
  {
    super(mensagem);
    this.mensagem = mensagem;
    this.name = "meuErro";
    this.codigo = cod;
  }

  //método customizado
  metodo()
  {
    console.log("metodo customizado");
  }
}
Saída
-

Não há diferença ao lançar ou relançar um exception customiza, exceto pelos atributos extras adicionados. O uso do comando throw é feito como já visto em outros exemplos.

Exemplo 3
class meuErro extends Error
{
  constructor(mensagem)
  {
    super(mensagem);
    this.mensagem = mensagem;
    this.name = "meuErro";
  }
  
  metodo()
  {
     console.log("metodo customizado");
  }
}

function funcao1()
{
  throw new meuErro("Um erro qualquer");
}

function funcao2()
{
  try 
  {
    funcao1();
  } 
  catch (e)
  {
    console.log("funcao2:",e.name);
    console.log("funcao2:",e.message);
    throw e; //relançando
  }
}
function funcao3()
{
    try
    {
        funcao2()
    }
    catch(e){
        console.log(e.message);
        e.metodo();
    }
}

funcao3();
Saída
funcao2: meuErro
funcao2: Um erro qualquer
Um erro qualquer
metodo customizado
  1. 18/08/2025 - revisão 3 - Ajustes: pontuais, exemplos e sintaxes; Adição: 'lançando e relançando'
  2. 25/09/2024 - revisão 2 - ajustes pontuais
  3. 05/02/2024 - revisão 1 - Correção navegação, layout e erros gramaticais
  4. 31/05/2023 - versão inicial