Los errores de programación son inevitables. Tarde o temprano, su aplicación experimentará algún comportamiento inesperado. Como cualquier otro lenguaje de programación, JavaScript genera errores cuando algo sale mal en su código.

Los errores interrumpen el flujo normal de una aplicación. Pero también ayudan a proteger su aplicación de un comportamiento impredecible. Saber cómo manejar los errores correctamente es crucial.

¿Por qué es importante el manejo de errores?

El manejo de errores contribuye a mejorar la experiencia del usuario. Puede intercambiar los errores predeterminados y, a veces, detallados de JavaScript con sus propios mensajes de error legibles por humanos. Puede manejar con gracia las causas de algunos errores y mantener su programa en ejecución en lugar de cerrarlo.

El manejo de errores también es útil durante el desarrollo. Puede detectar un error de tiempo de ejecución y hacer algo útil con él, como registrándolo en la consola del navegador. Esto es más elegante que el error que provoca un bloqueo y no saber dónde o por qué ocurrió el error.

instagram viewer

Estructura de los errores integrados de JavaScript

Los errores de JavaScript son objetos con tres propiedades:

  • nombre: Este es el nombre del error. Por ejemplo, la falta de un nombre de variable arrojará un error llamado SyntaxError.
  • mensaje: Este es el cuerpo del mensaje y explica el error textualmente.
  • causa: puede usar esta propiedad con errores personalizados para realizar un seguimiento de la pila de llamadas.

Tipos comunes de error en JavaScript

Estos son algunos errores comunes encontrados en JavaScript.

Error de sintaxis

Pueden ocurrir errores de sintaxis cuando JavaScript intenta interpretar su código. Generará un error si su código no se ajusta a la sintaxis correcta. Algunos errores comunes que pueden generar errores de sintaxis son:

  • Faltan nombres de variables.
  • Falta "}" después de una función.
  • Falta ")" después de una condición.

Error de referencia

Los errores de referencia ocurren cuando un programa intenta hacer referencia a una variable que no está disponible o fuera de alcance.

Error de tecleado

JavaScript puede arrojar un error de tipo cuando no puede realizar una operación porque el tipo que espera es diferente al que recibe.

URIError

Este error ocurre si usa una función de manejo de URI global, como decodeURIComponent(), incorrectamente. Como resultado, la codificación o decodificación falla.

Error agregado

Este error se usa para representar múltiples errores envueltos en uno. Úselo cuando quiera arrojar muchos errores a la vez. Por ejemplo, Promise.any() puede generar un AggregateError() cuando se rechazan todas las promesas que se le pasaron.

Error interno

Se lanza un InternalError cuando ocurre un error dentro del motor de JavaScript.

RangeError

Algunas funciones dictan el rango de valores que puede pasar como argumentos. Este error ocurre cuando intenta pasar un valor que no está incluido en ese rango.

Manejo de errores con Try... Bloque de captura

JavaScript proporciona una funcionalidad integrada de manejo de excepciones con el intentar… atrapar… finalmente bloquear. También le permite plantear sus propios errores utilizando el lanzar operador.

Puede usar un bloque try…catch para manejar los errores que ocurren durante el tiempo de ejecución. Escribe código válido que espera ejecutar correctamente en el bloque de prueba. En el bloque catch, puede escribir código de manejo de errores.

probar {
// Código Javascript válido
} captura (error) {
// Manejar el error
} finalmente {
// Ejecutado incluso cuando ocurre un error
}

El bloque catch se ignora si el código en el bloque try no genera ningún error. Si genera un error, la ejecución salta al bloque catch. El código del bloque finalmente se ejecuta tanto si se produce un error como si no. Este bloque no es obligatorio, así que omítalo si no lo necesita.

El código que incluyas en el bloque de prueba debe ser válido. Si no es así, JavaScript generará un error de análisis.

Veamos un ejemplo práctico:

probar {
consola.log (texto)
} captura (error) {
consola.Iniciar sesión(error.mensaje)
} finalmente {
consola.log("Se ejecutará independientemente")
}

Este programa intenta registrar el valor de la variable de texto. Como esa variable no está definida, el programa arrojará un error. Este error se imprime en la consola en el bloque catch. El bloque finalmente se ejecuta e imprime un mensaje propio.

Error de referencia: el texto no está definido
Se ejecutará independientemente

En situaciones en las que necesite plantear su propio error, utilice el lanzar operador.

Considere este ejemplo que arroja un error si los datos son falsos:

constante datos = obtener datos ()

probar {
si (!datos) {
lanzar "Sin datos"
}

consola.Dato de registro)
// Seguir
} captura(error) {
consola.log (error) // "Sin datos"
}

En este ejemplo, el programa llama a la función getData() y asigna su resultado a la variable de datos. En el bloque de prueba, el bloque arroja un error personalizado si los datos están vacíos. El bloque catch detecta ese error y lo registra en la consola.

Lanzar errores es muy beneficioso durante el desarrollo. Puede usar el mensaje de error personalizado para comprender por qué su aplicación no funciona como se esperaba.

Como demuestra este ejemplo, puede usar una cadena para el objeto de error. De hecho, puede lanzar cualquier expresión de JavaScript como un error. Sin embargo, en aras de la coherencia con los errores integrados, utilice un objeto de JavaScript que contenga un nombre y un mensaje.

lanzar {
nombre: "Nombre del error",
mensaje: "Mensaje de error"
}

También puede usar los constructores integrados de JavaScript cuando arroja errores. Estos constructores incluyen Error, SyntaxError y ReferenceError, entre otros.

Para lanzar un error usando el constructor Error, usa este código:

lanzarnuevoError("Sin datos")

Ahora puede hacer referencia al nombre y al mensaje.

consola.log (error.nombre) // Error
consola.log (error.mensaje) // Sin datos

Ampliación del objeto de error de JavaScript

Una clase de error personalizada resulta útil cuando se manejan errores que no se corresponden con los objetos ya proporcionados por JavaScript. Por ejemplo, es posible que desee aislar un error de validación de datos como un tipo específico denominado ValidationError.

Puedes usar un Clase JavaScript ES2015 para crear una clase de error personalizada.

claseError de validacionextiendeError{
constructor(mensaje) {
súper(mensaje);
este.nombre = "Error de validacion";
}
}

Lanza un error usando la clase ValidationError como esta:

lanzarnuevo ValidationError("Su mensaje de error")

El error arrojado será un objeto con el nombre y los valores del mensaje.

{
nombre: "Error de validacion",
mensaje: "Tu mensaje de error"
}

Los errores están ahí para ayudar

El manejo de errores es una parte fundamental de la programación, independientemente del lenguaje que esté utilizando. JavaScript tiene un gran soporte para generar y detectar errores en el estilo de excepciones. También tiene varios tipos de errores incorporados que puede manejar y usar para sus propios casos.

Algunos errores, como los errores de sintaxis, pueden pasar desapercibidos cuando escribe JavaScript en "modo descuidado". El uso del modo estricto permite que JavaScript detecte errores que, de otro modo, habría ignorado.