Objetivos
Manipulando error
Nesta parte do tutorial vamos estudar a classe Error que representa erros ocorridos
durante a execução de nossos programas em JavaScript. Vamos estudar sobre o tipo
Error, como capturar erros, como recuperar informações de erro e stacktrace.
Error
Um Error, é um evento ou acontecimento não desejado que pode ocorrer durante
a execução de nossos programas como, por exemplo, erros de acesso a memória,
falhas ao abrir um arquivo e outros.
Quando esse tipo de evento acontece, um objeto de um tipo de Error,
é "lançado" para que haja o conhecimento do evento e que seu tratamento seja feito.
Esse objeto contém as informações sobre o erro.
Quando um erro ocorre e precisamos obter algumas informações básicas como a mensagem do erro ou onde o
erro ocorreu. Para isso utilizamos as propriedades da classe Error abaixo:
Propriedade |
Descrição |
cause |
Retorna uma string contendo a causa do erro |
columnNumber |
- |
fileName |
Retorna uma string contendo nome do arquivo fonte |
message |
Retorna um string contendo mensagem de erro |
stack |
Retorna um string contendo a pilha de execução |
Exemplo 1
try
{
funcao_inexistente();
}
catch(erro)
{
console.log("cause:",erro.cause);
console.log("message:",erro.message);
console.log("stack:",erro.stack);
}
Saída
cause: undefined
message: funcao_inexistente is not defined
stack: ReferenceError: funcao_inexistente is not defined
at Object.<anonymous> (/runtime/javascript/index.js:3:5)
Capturando um ou mais erros
Em JavaScript, diferente de outras linguagens que possuem o bloco try/catch, não permite que haja
mais de um catch. Para que a captura de mais de um erro seja feita,
precisamos utilizar if-else e o operador instanceof.
Exemplo 2
try
{
funcao1();
}
catch(erro)
{
if(erro instanceof ReferenceError){
console.log(erro.message);
}
else if ( error instanceof TypeError){
//tratamento
}
}
Saída
funcao1 is not defined
Os comandos de decisão podem ser vistos em
JavaScript Básico: Comandos de decisão.
Para lançarmos um tipo de Error explicitamente em nossos programas em
JS, utilizamos o comando throw em conjunto de uma instância da tipo de error.
Exemplo 3
try
{
throw Error("erro desconhecido");
}
catch(erro)
{
console.log(erro.message);
}
Saída
erro desconhecido
Em alguns momentos, o tratamento de um erro não ser tratado em seu respectivo bloco catch.
Nesse caso, podemos relançar um erro, para um escopo acima do atual, utilizado também o
comando throw.
Sintaxe
try{
//omitido
}
catch( variavel_erro ){
throw variavel_erro;
}
Exemplo 4
function funcao1()
{
throw Error("erro desconhecido em funcao1");
}
function funcao2()
{
try
{
funcao1();
}
catch(erro)
{
throw erro;
}
}
function funcao3()
{
try
{
funcao2();
}
catch(erro)
{
console.log(erro.message);
}
}
funcao3();
Saída
erro desconhecido em funcao1
Caso uma nova exceção seja lançada ou invés de relançada, as informações do
stacktrace referentes ao erro serão perdidos, "mascarando" o erro.
O Stacktrace armazena todas as chamadas à funções feitas em nossos programas
até a linha em que um erro. Por ser uma Stack(Pilha) as chamadas são
armazenadas umas sobres as outras sendo a linha que lançou um erro a última.
Exemplo 5
function funcao1()
{
throw Error("erro desconhecido em funcao1");
}
function funcao2()
{
try
{
funcao1();
}
catch(erro)
{
throw erro;
}
}
function funcao3()
{
try
{
funcao2();
}
catch(erro)
{
console.log(erro.stack);
}
}
funcao3();
Saída
ReferenceError: funcao_inexistente is not defined
at funcao2 (/runtime/javascript/index.js:2:3)
at funcao1 (/runtime/javascript/index.js:6:3)
at principal (/runtime/javascript/index.js:12:7)
Histórico de atualizações
- 18/08/2025 - revisão 3 - Ajustes: pontuais, exemplos e sintaxes
- 25/09/2024 - revisão 2 - Remoção: 'Exemplos' em intro, link 'Gerenciando Memória.'; Correção: 'lançando'/'relançando'
- 06/10/2023 - revisão 1 - Correção navegação, layout e erros gramaticais
- 31/05/2023 - 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.