Objetivos
Erro customizado
A linguagem TS permite que erros customizados sejam criados a partir de outras classes de erros
existentes. Nesta parte do tutorial vamos entender criar, adicionar atributos/métodos e lançar nossos próprios erros customizados.
Criando erro customizado
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 da classe super herdada.
Sintaxe
class nome_erro extends excecao_nativa
{
constructor(mensagem:string )
{
super(mensagem);
}
}
Chamando o construtor da classe que herdamos, podemos utilizar as propriedades name,
message e stack e outros atributos.
Exemplo 1
//erro customizado
class meuErro extends Error
{
constructor(msg:string){ //construtor
super(msg); //construtor da classe pai
}
metodo(){
//omitido
}
}
function funcao1():void {
throw new meuErro("Um erro qualquer");
}
function funcao2():void {
try {
funcao1();
}
catch (e:any) {
console.log(e.name);
console.log(e.message);
}
}
funcao2();
Saída
Error
um erro qualquer
Adicionando métodos e atributos
As exceções 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
{
private codigo:number = -1;
constructor(msg:string,cod:number)
{
super(msg);
this.name = "meuErro";
this.codigo = cod;
}
metodo():void
{
console.log('metodo erro customizado');
}
}
function funcao1():void
{
throw new meuErro("Um erro qualquer",999);
}
function funcao2():void
{
try
{
funcao1();
}
catch (e:any)
{
console.log(e.name);
console.log(e.message);
console.log(e.codigo);
e.metodo();
}
}
funcao2();
Saída
meuErro
Um erro qualquer
meuErro
Um erro qualquer
999
metodo erro customizado
Lançando e relançando
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(msg: string)
{
super(msg);
}
metodo()
{
console.log("metodo customizado");
}
}
function funcao1()
{
throw new meuErro("Um erro qualquer");
}
function funcao2()
{
try
{
funcao1();
}
catch (err: any)
{
console.log("funcao2:",err.message);
throw err; //relançando
}
}
function funcao3()
{
try
{
funcao2()
}
catch(err: any){
console.log(err.message);
err.metodo();
}
}
funcao3();
Saída
funcao2: Um erro qualquer
Um erro qualquer
metodo customizado
Histórico de atualizações
- 29/08/2025 - revisão 2 - Ajustes: pontuais, exemplos, sintaxes, 'objetivos'; Adição: 'lançando e relançando'
- 14/09/2024 - revisão 1 - Adição de método dentro de classe em Ex. 2, outros ajustes pontuais
- 28/02/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.