Tutorial JS

JS INICIO JS Introducción JS Dónde Salida JS Declaraciones JS Sintaxis JS Comentarios JS Variables JS JS Vamos Constante JS Operadores JS Aritmética JS Tarea JS Tipos de datos JS Funciones JS Objetos JS Eventos JS Cadenas JS Métodos de cadena JS Búsqueda de cadenas JS Plantillas de cadena JS Números JS Métodos numéricos JS Matrices JS Métodos de matriz JS Clasificación de matriz JS Iteración de matriz JS Constante de matriz JS Fechas JS Formatos de fecha JS Métodos de obtención de fecha JS Métodos de configuración de fechas JS Matemáticas JS JS al azar Booleanos JS Comparaciones JS Condiciones JS Interruptor JS Bucle JS para Bucle JS para entrada Bucle JS para de Bucle JS mientras descanso JS Iterables JS Conjuntos JS Mapas JS JS Tipo de Conversión de tipo JS JS bit a bit JS expresión regular Errores JS Alcance JS JS Elevación Modo estricto JS JS esta palabra clave Función de flecha JS Clases JS JSJSON Depuración JS Guía de estilo JS Prácticas recomendadas de JS Errores JS Rendimiento JS Palabras reservadas de JS

Versiones JS

Versiones JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Borde Historia de JS

Objetos JS

Definiciones de objetos Propiedades del objeto Métodos de objeto Visualización de objetos Accesores de objetos Constructores de objetos Prototipos de objetos Objeto iterables Conjuntos de objetos Mapas de objetos Referencia de objeto

Funciones JS

Definiciones de funciones Parámetros de función Invocación de función Llamada de función Función Aplicar Cierres de funciones

Clases JS

Introducción a la clase Herencia de clase Clase estática

JS asíncrono

Devoluciones de llamada JS JS asíncrono Promesas JS JS asíncrono/espera

JS HTML DOM

Introducción al DOM Métodos DOM Documento DOM Elementos DOM DOM HTML Formularios DOM DOM CSS Animaciones DOM Eventos DOM Oyente de eventos DOM Navegación DOM Nodos DOM Colecciones DOM Listas de nodos DOM

Lista de materiales del navegador JS

Ventana JS Pantalla JS Ubicación de JS Historia de JS Navegador JS Alerta emergente JS Tiempo JS Galletas JS

API web de JS

Introducción a la API web API de formularios web API de historial web API de almacenamiento web API de trabajo web API de búsqueda web API de geolocalización web

JS AJAX

Introducción a AJAX AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

JSJSON

Introducción JSON Sintaxis JSON JSON frente a XML Tipos de datos JSON Análisis JSON Cadena JSON Objetos JSON Matrices JSON Servidor JSON JSONPHP JSONHTML JSON JSONP

JS frente a jQuery

Selectores jQuery HTML de jQuery CSS de jQuery DOM de jQuery

Gráficos JS

Gráficos JS Lienzo JS JS Trazado Gráfico JS.js Gráfico de Google JS JS D3.js

Ejemplos de JS

Ejemplos de JS JS HTML DOM Entrada HTML JS Objetos JS HTML Eventos JS HTML Navegador JS Editor JS Ejercicios JS Prueba JS Certificado JS

Referencias JS

Objetos JavaScript Objetos HTML DOM


Errores de JavaScript


Tira e intenta... Atrapa... Finalmente

La trydeclaración define un bloque de código para ejecutar (para probar).

La catchdeclaración define un bloque de código para manejar cualquier error.

La finallydeclaración define un bloque de código para ejecutar independientemente del resultado.

La throwinstrucción define un error personalizado.


¡Ocurrirán errores!

Al ejecutar código JavaScript, pueden ocurrir diferentes errores.

Los errores pueden ser errores de codificación cometidos por el programador, errores debido a una entrada incorrecta y otras cosas imprevisibles.

Ejemplo

En este ejemplo, escribimos mal "alerta" como "adddlert" para producir un error deliberadamente:

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

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

JavaScript detecta adddlert como un error y ejecuta el código catch para manejarlo.


JavaScript prueba y atrapa

La trydeclaración le permite definir un bloque de código para probar errores mientras se ejecuta.

La catchinstrucción le permite definir un bloque de código que se ejecutará si ocurre un error en el bloque de prueba.

Las declaraciones de JavaScript tryy catch vienen en pares:

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


JavaScript arroja errores

Cuando ocurre un error, JavaScript normalmente se detendrá y generará un mensaje de error.

El término técnico para esto es: JavaScript lanzará una excepción (arrojará un error) .

JavaScript realmente creará un objeto Error con dos propiedades: nombre y mensaje .


La declaración de tiro

La throwdeclaración le permite crear un error personalizado.

Técnicamente, puede lanzar una excepción (lanzar un error) .

La excepción puede ser JavaScript String, a Number, a Booleano an Object:

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

Si usa throwjunto con tryy catch, puede controlar el flujo del programa y generar mensajes de error personalizados.


Ejemplo de validación de entrada

Este ejemplo examina la entrada. Si el valor es incorrecto, se lanza una excepción (err).

La declaración catch captura la excepción (err) y se muestra un mensaje de error personalizado:

<!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>

Validación HTML

El código anterior es solo un ejemplo.

Los navegadores modernos a menudo usan una combinación de JavaScript y validación HTML integrada, usando reglas de validación predefinidas definidas en atributos HTML:

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

Puede leer más sobre la validación de formularios en un capítulo posterior de este tutorial.


La declaración final

La finallydeclaración le permite ejecutar código, después de intentar y capturar, independientemente del resultado:

Sintaxis

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
}

Ejemplo

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 = "";
  }
}

El objeto de error

JavaScript tiene un objeto de error incorporado que proporciona información de error cuando ocurre un error.

El objeto de error proporciona dos propiedades útiles: nombre y mensaje.


Propiedades del objeto de error

PropiedadDescripción
nombreEstablece o devuelve un nombre de error
mensajeEstablece o devuelve un mensaje de error (una cadena)

Valores de nombre de error

La propiedad del nombre del error puede devolver seis valores diferentes:

Nombre del errorDescripción
EvalErrorHa ocurrido un error en la función eval()
RangeErrorSe ha producido un número "fuera de rango"
Error de referenciaHa ocurrido una referencia ilegal
Error de sintaxisSe ha producido un error de sintaxis.
Error de tecleadoSe ha producido un error de tipo
URIErrorSe ha producido un error en codificarURI()

Los seis valores diferentes se describen a continuación.


Error de evaluación

Un EvalErrorindica un error en la función eval().

Las versiones más nuevas de JavaScript no arrojan EvalError. Utilice SyntaxError en su lugar.


Error de rango

Se RangeErrorlanza una si usa un número que está fuera del rango de valores legales.

Por ejemplo: no puede establecer el número de dígitos significativos de un número en 500.

Ejemplo

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

Error de referencia

Se ReferenceErrorlanza una si usa (referencia) una variable que no ha sido declarada:

Ejemplo

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

Error de sintaxis

Se SyntaxErrorlanza una si intenta evaluar el código con un error de sintaxis.

Ejemplo

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

Error de tecleado

Se TypeErrorlanza una si usa un valor que está fuera del rango de tipos esperados:

Ejemplo

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

Error de URI (identificador uniforme de recursos)

Se URIErrorlanza una si usa caracteres ilegales en una función URI:

Ejemplo

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

Propiedades de objeto de error no estándar

Mozilla y Microsoft definen algunas propiedades de objetos de error no estándar:

nombre de archivo ( Mozilla ) número
de línea (Mozilla)
número de columna (Mozilla)
pila (Mozilla)
descripción (Microsoft)
número (Microsoft)

No utilice estas propiedades en sitios web públicos. No funcionarán en todos los navegadores.


Referencia completa de errores

Para obtener una referencia completa del objeto Error, vaya a nuestra Referencia completa de errores de JavaScript .