Tutorial de JS

JS HOME Introdução JS JS Para onde Saída JS Declarações JS Sintaxe JS Comentários JS Variáveis ​​JS JS Let JS Const Operadores JS JS Aritmética Atribuição de JS Tipos de dados JS Funções JS Objetos JS Eventos JS Strings JS Métodos de string JS Pesquisa de String JS Modelos de String JS Números JS Métodos de número JS Matrizes JS Métodos de matriz JS Classificação de matriz JS Iteração de matriz JS Const da matriz JS Datas JS Formatos de data JS Métodos de obtenção de data JS Métodos de conjunto de datas JS JS Math JS Aleatório JS Booleanos Comparações JS Condições JS Interruptor JS Circuito JS para JS Loop Para Entrada JS Loop Para De JS Loop Enquanto Quebra de JS Iteráveis ​​JS Conjuntos JS Mapas JS Tipo JS de Conversão de tipo JS JS bit a bit JS RegExp Erros JS Escopo JS Içamento JS Modo estrito JS JS esta palavra-chave Função de seta JS Classes JS JS JSON Depuração JS Guia de estilo JS Práticas recomendadas de JS Erros de JS Desempenho JS Palavras reservadas JS

Versões JS

Versões JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Histórico de JS

Objetos JS

Definições de objeto Propriedades do objeto Métodos de objeto Exibição de objetos Acessadores de objetos Construtores de objetos Protótipos de Objetos Iteráveis ​​de objeto Conjuntos de objetos Mapas de objetos Referência do objeto

Funções JS

Definições de função Parâmetros de função Invocação de função Chamada de Função Função Aplicar Fechamentos de Função

Classes JS

Introdução à aula Herança de classe Classe Estática

JS Assíncrono

Retornos de chamada JS JS Assíncrono Promessas JS JS Async/Aguardar

JS HTML DOM

Introdução ao DOM Métodos DOM Documento DOM Elementos DOM HTML DOM Formulários DOM CSS DOM Animações DOM Eventos DOM Ouvinte de eventos DOM Navegação DOM Nós DOM Coleções DOM Listas de nós DOM

BOM do navegador JS

Janela JS Tela JS Localização JS Histórico de JS Navegador JS Alerta pop-up JS Temporização JS Cookies JS

APIs da Web JS

Introdução à API da Web API de formulários da Web API de histórico da web API de armazenamento da Web API do trabalhador da Web API de busca da Web API de geolocalização da Web

JS AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

JS JSON

Introdução JSON Sintaxe JSON JSON x XML Tipos de dados JSON Análise JSON JSON Stringify Objetos JSON Matrizes JSON Servidor JSON JSON PHP HTML JSON JSON JSONP

JS x jQuery

Seletores jQuery HTML jQuery jQuery CSS jQuery DOM

Gráficos JS

Gráficos JS Tela JS JS Plotly JS Chart.js JS Google Chart JS D3.js

Exemplos JS

Exemplos JS JS HTML DOM Entrada HTML JS Objetos HTML JS Eventos HTML JS Navegador JS Editor JS Exercícios JS Teste JS Certificado JS

Referências JS

Objetos JavaScript Objetos HTML DOM


Erros de JavaScript


Jogue e tente...Pegue...Finalmente

A tryinstrução define um bloco de código para ser executado (para tentar).

A catchinstrução define um bloco de código para lidar com qualquer erro.

A finallyinstrução define um bloco de código para ser executado independentemente do resultado.

A throwinstrução define um erro personalizado.


Erros vão acontecer!

Ao executar o código JavaScript, diferentes erros podem ocorrer.

Erros podem ser erros de codificação feitos pelo programador, erros devido a entrada errada e outras coisas imprevisíveis.

Exemplo

Neste exemplo, digitamos incorretamente "alert" como "adddlert" para produzir deliberadamente um erro:

<p id="demo"></p>

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>

JavaScript detecta adddlert como um erro e executa o código catch para tratá-lo.


JavaScript tente e pegue

A tryinstrução permite que você defina um bloco de código para ser testado quanto a erros enquanto está sendo executado.

A catchinstrução permite definir um bloco de código a ser executado, caso ocorra um erro no bloco try.

As instruções JavaScript trye catch vêm em pares:

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}


JavaScript lança erros

Quando ocorre um erro, o JavaScript normalmente para e gera uma mensagem de erro.

O termo técnico para isso é: JavaScript lançará uma exceção (lançará um erro) .

Na verdade, o JavaScript criará um objeto Error com duas propriedades: name e message .


A declaração de arremesso

A throwinstrução permite que você crie um erro personalizado.

Tecnicamente, você pode lançar uma exceção (lançar um erro) .

A exceção pode ser um JavaScript String, a Number, a Booleanou an Object:

throw "Too big";    // throw a text
throw 500;          // throw a number

Se você usar throwjunto com trye catch, poderá controlar o fluxo do programa e gerar mensagens de erro personalizadas.


Exemplo de validação de entrada

Este exemplo examina a entrada. Se o valor estiver errado, uma exceção (err) é lançada.

A exceção (err) é capturada pela instrução catch e uma mensagem de erro personalizada é exibida:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="p01"></p>

<script>
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>

Validação HTML

O código acima é apenas um exemplo.

Os navegadores modernos geralmente usam uma combinação de JavaScript e validação HTML integrada, usando regras de validação predefinidas definidas em atributos HTML:

<input id="demo" type="number" min="5" max="10" step="1">

Você pode ler mais sobre validação de formulários em um capítulo posterior deste tutorial.


A declaração final

A finallyinstrução permite executar o código, depois de tentar e pegar, independentemente do resultado:

Sintaxe

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}
finally {
  Block of code to be executed regardless of the try / catch result
}

Exemplo

function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "is empty";
    if(isNaN(x)) throw "is not a number";
    x = Number(x);
    if(x > 10) throw "is too high";
    if(x < 5) throw "is too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

O objeto de erro

JavaScript tem um objeto de erro integrado que fornece informações de erro quando ocorre um erro.

O objeto de erro fornece duas propriedades úteis: nome e mensagem.


Propriedades do objeto de erro

PropriedadeDescrição
nomeDefine ou retorna um nome de erro
mensagemDefine ou retorna uma mensagem de erro (uma string)

Valores de nome de erro

Seis valores diferentes podem ser retornados pela propriedade error name:

Nome do erroDescrição
EvalErrorOcorreu um erro na função eval()
Erro de intervaloOcorreu um número "fora do intervalo"
Erro de referênciaOcorreu uma referência ilegal
Erro de sintaxeOcorreu um erro de sintaxe
TypeErrorOcorreu um erro de tipo
Erro de URIOcorreu um erro no encodeURI()

Os seis valores diferentes são descritos abaixo.


Erro de avaliação

An EvalErrorindica um erro na função eval().

Versões mais recentes do JavaScript não lançam EvalError. Use SyntaxError em vez disso.


Erro de intervalo

A RangeErroré lançado se você usar um número que está fora do intervalo de valores legais.

Por exemplo: Você não pode definir o número de dígitos significativos de um número para 500.

Exemplo

let num = 1;
try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Erro de referência

A ReferenceErroré lançado se você usar (referência) uma variável que não foi declarada:

Exemplo

let x = 5;
try {
  x = y + 1;   // y cannot be used (referenced)
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Erro de sintaxe

A SyntaxErroré lançado se você tentar avaliar o código com um erro de sintaxe.

Exemplo

try {
  eval("alert('Hello)");   // Missing ' will produce an error
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Erro de tipo

A TypeErroré lançado se você usar um valor que está fora do intervalo de tipos esperados:

Exemplo

let num = 1;
try {
  num.toUpperCase();   // You cannot convert a number to upper case
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Erro de URI (Identificador Uniforme de Recursos)

A URIErroré lançado se você usar caracteres ilegais em uma função URI:

Exemplo

try {
  decodeURI("%%%");   // You cannot URI decode percent signs
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Propriedades do objeto de erro não padrão

A Mozilla e a Microsoft definem algumas propriedades de objetos de erro não padrão:

fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack (Mozilla)
descrição (Microsoft)
número (Microsoft)

Não use essas propriedades em sites públicos. Eles não funcionarão em todos os navegadores.


Referência de erro completa

Para obter uma referência completa do objeto Error, acesse nosso Complete JavaScript Error Reference .