As mensagens de erro mais comuns no JavaScript

As mensagens de erro mais comuns no JavaScript

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('%')

 

Está começando e deseja saber o que precisa estudar de HTML e JavaScript? Não deixe de conferir os roteiros de estudo de HTML e JavaScript!. São dezenas de conteúdos para você melhorar suas habilidades.

Roteiro de estudos - HTML e CSS

Roteiro de estudos - Javascript

Outros conteudos que podem ser de seu interesse

Criar um QRCode sem programação
14/11/2019JAVASCRIPT

Criar um QRCode sem programação

Aprenda como gerar um QRCode com apenas 1 linha

Saiba mais...
Criando gráficos em JavaScript com ChartJS
10/10/2019JAVASCRIPT

Criando gráficos em JavaScript com ChartJS

Um exemplo de como criar gráficos em JavaScript

Saiba mais...

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