Command Palette

Search for a command to run...

Tipos de Errores Nativos en JavaScript

Aprende sobre los diferentes tipos de errores nativos: Error, TypeError, ReferenceError, SyntaxError, RangeError y más, con ejemplos prácticos.

Lectura: 15 min
Nivel: Principiante

TL;DR - Resumen rápido

  • JavaScript tiene varios tipos de errores nativos para diferentes situaciones
  • TypeError: Operaciones con tipos incorrectos de datos
  • ReferenceError: Acceso a variables o propiedades no declaradas
  • SyntaxError: Errores de sintaxis en código o JSON
  • RangeError: Valores numéricos fuera de rango permitido

Introducción a los Tipos de Errores Nativos

JavaScript proporciona varios constructores de errores nativos que representan diferentes tipos de problemas que pueden ocurrir en tu código. Cada tipo de error tiene un propósito específico y usar el tipo apropiado hace que tu código sea más claro, fácil de depurar y mantenible.

Los errores nativos más comunes son Error (genérico),TypeError, ReferenceError, SyntaxError,RangeError, URIError y AggregateError. Siempre usa el tipo de error más específico para la situación: por ejemplo, usa TypeError cuando el tipo de dato es incorrecto, noError genérico. Esto hace que debugging sea más eficiente y el código más claro.

  • <strong>Error</strong>: Error genérico para casos no específicos
  • <strong>TypeError</strong>: Operaciones con tipos incorrectos
  • <strong>ReferenceError</strong>: Variables o propiedades no declaradas
  • <strong>SyntaxError</strong>: Errores de sintaxis en código
  • <strong>RangeError</strong>: Valores numéricos fuera de rango

Error Genérico

El constructor Error es el tipo de error más básico y genérico en JavaScript. Se usa cuando no hay un tipo específico más apropiado para la situación o cuando el error no encaja claramente en categorías como tipo, referencia o rango.

error.js
Loading code...

Este ejemplo muestra cómo usar Error genérico en diferentes situaciones. Puedes crear un error básico, un error sin mensaje (no recomendado), diferentes tipos de errores nativos y lanzar errores con mensajes dinámicos basados en validaciones de datos.

Cuándo usar Error genérico

Usa Error genérico solo cuando no hay un tipo específico más apropiado. Para errores de tipo de dato, usa TypeError. Para variables no declaradas, usa ReferenceError. Usar el tipo correcto hace que debugging sea más eficiente.

TypeError

TypeError se lanza cuando una operación se realiza en un valor del tipo incorrecto. Esto incluye acceder a propiedades de null oundefined, llamar valores que no son funciones, o intentar modificar propiedades de solo lectura.

type-error.js
Loading code...

Este ejemplo muestra diferentes escenarios que lanzan TypeError: operaciones con tipos incorrectos, acceder a propiedades de null, llamar no-funciones, asignar a propiedades de solo lectura y usar el operador new incorrectamente.

  • <strong>Acceder a propiedad de null/undefined</strong>: obj.propiedad cuando obj es null
  • <strong>Llamar no-función</strong>: valor() cuando valor no es función
  • <strong>Modificar propiedad de solo lectura</strong>: Asignar a writable: false
  • <strong>Usar new incorrectamente</strong>: new cuando ya es una instancia

ReferenceError

ReferenceError se lanza cuando intentas acceder a una variable o propiedad que no existe o no ha sido declarada. Esto ocurre comúnmente cuando hay errores tipográficos en nombres de variables o cuando intentas acceder a variables antes de su declaración (hoisting).

reference-error.js
Loading code...

Este ejemplo muestra diferentes escenarios que lanzan ReferenceError: acceder a variables no declaradas, acceder a variables antes de declaración conlet/const, usar this en arrow functions, acceder a variables fuera de scope y usar eval con variables no definidas.

Usa optional chaining para evitar ReferenceError

El optional chaining (obj?.propiedad?.subpropiedad) es una forma elegante de evitar ReferenceError cuando accedes a propiedades anidadas que pueden ser undefined. En lugar de lanzar un error, simplemente obtienes undefined.

SyntaxError

SyntaxError se lanza cuando JavaScript encuentra código con sintaxis inválida. Esto ocurre comúnmente al parsear JSON inválido, usareval con código incorrecto, o usar new Function()con código mal formado.

syntax-error.js
Loading code...

Este ejemplo muestra diferentes escenarios que lanzan SyntaxError: JSON inválido, código inválido en eval, código inválido ennew Function(), paréntesis desbalanceados, identificadores inválidos y uso de palabras reservadas.

Valida JSON antes de parsear

Siempre valida el JSON antes de usar JSON.parse() para evitarSyntaxError inesperados. Usa try/catch alrededor de JSON.parse() y lanza un SyntaxErrorpersonalizado con información sobre qué salió mal.

RangeError

RangeError se lanza cuando un valor numérico está fuera del rango permitido para una operación específica. Esto ocurre comúnmente con métodos como toPrecision(), toFixed(), toString()con radix inválido, o al crear arrays con longitudes inválidas.

range-error.js
Loading code...

Este ejemplo muestra diferentes escenarios que lanzan RangeError:toPrecision() con dígitos inválidos, arrays con longitudes negativas, repeat() con argumentos negativos, toFixed()con demasiados decimales y toString() con radix inválido.

  • <strong>toPrecision/toFixed</strong>: Dígitos fuera de rango (0-100)
  • <strong>Array length</strong>: Longitud negativa o muy grande
  • <strong>String repeat</strong>: Argumentos negativos o muy grandes
  • <strong>Number toString</strong>: Radix fuera de rango (2-36)

Otros Tipos de Errores

Además de los errores más comunes, JavaScript tiene otros tipos de errores nativos menos frecuentes pero igualmente importantes. URIError se lanza al codificar/decodificar URIs inválidas, AggregateError (ES2021) permite agrupar múltiples errores en uno solo, y otros como EvalErrory InternalError son obsoletos.

otros-errores.js
Loading code...

Este ejemplo muestra otros tipos de errores: URIError al codificar URIs inválidas, AggregateError para agrupar múltiples errores, errores obsoletos como EvalError y InternalError, y cómo usar instanceof para diferenciar tipos de errores.

AggregateError para múltiples validaciones

AggregateError (ES2021) es útil cuando tienes múltiples validaciones que pueden fallar. En lugar de lanzar el primer error que encuentres, puedes agrupar todos los errores en un AggregateError que contiene un array con todos los errores individuales.

Errores Comunes

Al trabajar con tipos de errores nativos, hay varios errores comunes que los desarrolladores cometen. Estos errores pueden hacer debugging más difícil, perder información importante o causar que el manejo de errores sea inefectivo.

errores-comunes.js
Loading code...

Este ejemplo muestra los seis errores más frecuentes: usar Error genérico cuando existe uno específico, no validar antes de operaciones que lanzan errores, ignorar el tipo de error en el catch, no verificar rangos antes de usar funciones numéricas, no usar instanceof para diferenciar tipos, y lanzar el tipo de error incorrecto para la situación.

Usa el tipo de error específico

Siempre usa el tipo de error más específico para la situación. UsarError genérico cuando existe TypeError, ReferenceErroru otro tipo específico hace que debugging sea más difícil. El tipo de error comunica inmediatamente qué categoría de problema ocurrió.

Patrones Útiles

Hay varios patrones comunes que utilizan los tipos de errores nativos para crear código más robusto y fácil de depurar. Estos patrones incluyen validación con tipos específicos de errores, manejo de múltiples errores y diferenciación de tipos de errores.

patrones-utiles.js
Loading code...

Este ejemplo muestra seis patrones prácticos: validación de tipos con TypeError, validación de rangos con RangeError, validación de JSON conSyntaxError, manejo de múltiples errores conAggregateError, diferenciación de tipos con instanceof y envolver errores con contexto adicional usando la propiedad cause.

  • <strong>Validación con TypeError</strong>: Verificar tipos de parámetros
  • <strong>Validación con RangeError</strong>: Verificar rangos numéricos
  • <strong>Validación con SyntaxError</strong>: Validar JSON antes de parsear
  • <strong>AggregateError</strong>: Agrupar múltiples errores en uno
  • <strong>instanceof</strong>: Diferenciar tipos de errores para manejo específico

Resumen: Tipos de Errores Nativos

Conceptos principales:

  • JavaScript tiene varios tipos de errores nativos para diferentes situaciones
  • TypeError: Operaciones con tipos incorrectos de datos
  • ReferenceError: Variables o propiedades no declaradas
  • SyntaxError: Errores de sintaxis en código o JSON
  • RangeError: Valores numéricos fuera de rango permitido

Mejores prácticas:

  • Usa el tipo de error específico para cada situación
  • Valida antes de operaciones que pueden lanzar errores
  • Usa instanceof para diferenciar tipos de errores
  • Usa AggregateError para agrupar múltiples errores
  • Proporciona mensajes descriptivos con contexto específico