JAVASCRIPT

As mensagens de erro mais comuns no JavaScript

Um resumo com as mensagens de erro mais comuns do JavaScript

04/10/2020JAVASCRIPT

As mensagens de erro do JavaScript são pouco amigáveis para quem está começando a programar.

Vamos ver uma lista das mensagens de erro mais comuns do JavaScript, e alguns exemplos de como elas podem acontecer.

1 - Uncaught TypeError: Cannot Read Property

Este erro ocorre quando você quer acessar uma propriedade ou método de um objeto que não existe.

var produto;

produto.nome = "radio";

produto.valor = 20;

console.log(produto.peso);

 

2 - TypeError: ‘undefined’ Is Not an Object


Este erro é o mesmo que foi descrito acima, a diferença é que esta mensagem de erro aparece no Chrome.

 

3. TypeError: ‘null’ Is Not an Object

O erro acima ocorre quando você chama uma propriedade ou método de um objeto null. É igual ao primeiro erro, a diferença é que esta mensagem é específica do Safari.

4. TypeError: Object Doesn’t Support Property

Se você utiliza o navegador Internet Explorer, este erro ocorre quando você chama um método que não foi definido.

var produto;

produto.nome = "radio";

produto.valor = 20;

produto.aumentar();


5. TypeError: ‘this.<>’ Is Not a Function

Este erro ocorre quando você chama uma função que não foi definida, esta mensagem pode aparecer no Chrome e no Firefox

 

var produto;

produto.nome = "radio";

produto.valor = 20;

produto.aumentar();

 

6. Uncaught RangeError

Este erro ocorre no Chrome por dois motivos, o primeiro pode ser uma função recursiva que não terminou, e o segundo, um valor fora do intervalo esperado para uma função.

 

//Exemplo 1

function avisar(){

avisar();

}

avisar();

 

//Exemplo 2

var numero = 3.14

console.log(numero.toPrecision(1));

console.log(numero.toPrecision(0));

 

Para o tratamento de erros, podemos utilizar try/catch. O "try" permite informar o código que deve ser testado. O catch permite definir instruções que vão ser executadas, caso tenha ocorrido algum erro no código informado no bloco "try".

 

try {

  executar("comando");

} catch(err) {

  console.log(err.message);

}

 

Além do try e catch, existe o throw, que permite criar erros customizados, e o finally, que permite executar comandos independente do resultado do try/catch.

 

try {

  executar("comando");

} catch(err) {

  console.log(err.message);

} finally {

  console.log('fim');

}

 

Ao ocorrer um erro, é gerado um objeto "error", contendo duas propriedades, a primeira se chama name e serve para mostrar qual a categoria do erro, e a propriedade message mostra a mensagem de erro.

Existem 6 tipos de categorias de erro, que são as seguintes:

 

 

 

  • EvalError

 

 

  • RangeError

 

 

  • ReferenceError

 

 

  • SyntaxError

 

 

  • TypeError

 

 

  • URIError

 

 

 

Uma descrição resumida destes erros você acompanha a seguir:

EvalError

Esta tipo de erro existe por razões de compatibilidade, já que não existe mais deste a versão 5.1 do ECMAScript, ele ocorria quando a função global eval foi utilizada de forma incorreta. Portanto, provavelmente você não deve ver erros deste tipo

RangeError

Ocorre quando um número informado não é compatível com o intervalo de números válidos. 

var numero = 3.14

console.log(numero.toPrecision(0));

Algumas mensagens de erro deste tipo são as seguintes:

 

 

  • RangeError: argument is not a valid code point

 

 

  • RangeError: precision is out of range

 

 

  • RangeError: invalid array length

 

 

  • RangeError: invalid date

 

 

  • RangeError: radix must be an integer

 

 

  • RangeError: repeat count must be less than infinity

 

 

  • RangeError: repeat count must be non-negative

 

 

 

 

ReferenceError

Os erros de referência ocorrem quando ocorre uma referência inválida, ou seja, se tenta acessar uma variável/metodo/propriedade que não existe. 

 

function foo() { 

  'use strict'; 

  bar = true; //variavel não declarada

foo();

 

Mensagens de erro deste tipo:

 

 

 

  • ReferenceError: "x" is not defined

 

 

  • ReferenceError: assignment to undeclared variable "x"

 

 

  • ReferenceError: can't access lexical declaration 'X' before initialization

 

 

  • ReferenceError: deprecated caller or arguments usage

 

 

  • ReferenceError: invalid assignment left-hand side

 

 

  • ReferenceError: reference to undefined property "x"

 

 

 

SyntaxError

Ocorrem quando é detectado um erro de sintaxe na programação. 

 

Math.max(2, 42,);

 

Mensagens de erro deste tipo:

 

 

 

  • SyntaxError: JSON.parse: bad parsing

 

 

  • SyntaxError: Malformed formal parameter

 

 

  • SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated

 

 

  • SyntaxError: "use strict" not allowed in function with non-simple parameters

 

 

  • SyntaxError: "x" is a reserved identifier

 

 

  • SyntaxError: Unexpected token

 

 

  • SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead

 

 

  • SyntaxError: a declaration in the head of a for-of loop can't have an initializer

 

 

  • SyntaxError: applying the 'delete' operator to an unqualified name is deprecated

 

 

  • SyntaxError: for-in loop head declarations may not have initializers

 

 

  • SyntaxError: function statement requires a name

 

 

  • SyntaxError: identifier starts immediately after numeric literal

 

 

  • SyntaxError: illegal character

 

 

  • SyntaxError: invalid regular expression flag "x"

 

 

  • SyntaxError: missing ) after argument list

 

 

  • SyntaxError: missing ) after condition

 

 

  • SyntaxError: missing : after property id

 

 

  • SyntaxError: missing ; before statement

 

 

  • SyntaxError: missing = in const declaration

 

 

  • SyntaxError: missing ] after element list

 

 

  • SyntaxError: missing formal parameter

 

 

  • SyntaxError: missing name after . operator

 

 

  • SyntaxError: missing variable name

 

 

  • SyntaxError: missing } after function body

 

 

  • SyntaxError: missing } after property list

 

 

  • SyntaxError: redeclaration of formal parameter "x"

 

 

  • SyntaxError: return not in function

 

 

  • SyntaxError: test for equality (==) mistyped as assignment (=)?

 

 

  • SyntaxError: unterminated string literal

 

 

 

 

 

TypeError

Estes erros ocorrem quando um valor tem um tipo diferente daquele que é esperado. 

 

var produto;

produto.nome = "radio";

produto.valor = 20;

produto.aumentar();

 

Mensagens de erro deste tipo:

 

 

 

  • TypeError: "x" has no properties

 

 

  • TypeError: "x" is (not) "y"

 

 

  • TypeError: "x" is read-only

 

 

  • TypeError: "x" is not a constructor

 

 

  • TypeError: "x" is not a function

 

 

  • TypeError: "x" is not a non-null object

 

 

  • TypeError: 'x' is not iterable

 

 

  • TypeError: More arguments needed

 

 

  • TypeError: Reduce of empty array with no initial value

 

 

  • TypeError: can't access dead object

 

 

  • TypeError: can't access property "x" of "y"

 

 

  • TypeError: can't define property "x": "obj" is not extensible

 

 

  • TypeError: can't delete non-configurable array element

 

 

  • TypeError: can't redefine non-configurable property "x"

 

 

  • TypeError: cannot use 'in' operator to search for 'x' in 'y'

 

 

  • TypeError: cyclic object value

 

 

  • TypeError: invalid 'instanceof' operand 'x'

 

 

  • TypeError: invalid Array.prototype.sort argument

 

 

  • TypeError: invalid arguments

 

 

  • TypeError: invalid assignment to const "x"

 

 

  • TypeError: property "x" is non-configurable and can't be deleted

 

 

  • TypeError: setting getter-only property "x"

 

 

  • TypeError: variable "x" redeclares argument

 

 

 

 

 

URIError

Ocorre quando passamos uma URI inválida para as seguintes funções globais:

 

 

 

  • decodeURI()

 

 

  • decodeURIComponent()

 

 

  • encodeURI()

 

 

  • encodeURIComponent()

 

 

 

decodeURIComponent('%')

 

Outros conteudos que podem ser de seu interesse

Monitorando arquivos com NodeJS
15/12/2019JAVASCRIPT

Monitorando arquivos com NodeJS

Veja como controlar alterações de arquivos numa pasta utilizando NodeJS

Saiba mais...
Exportar tabela para Excel com Javascript
07/10/2019JAVASCRIPT

Exportar tabela para Excel com Javascript

Aprenda a exportar sua tabela HTML para Excel usando o plugin DataTables

Saiba mais...

Conteúdo sobre banco de dados sem complicação!

MySQL - Referência Rápida

 

SQL Server - Referência Rápida

 

SQL vs Mongo