Command Palette

Search for a command to run...

Objeto Error: Propiedades y Uso

Aprende a trabajar con el objeto Error en JavaScript, sus propiedades fundamentales como message, name, stack y cómo personalizarlo para debugging efectivo.

Lectura: 12 min
Nivel: Principiante

TL;DR - Resumen rápido

  • El objeto Error tiene propiedades name, message y stack para debugging
  • Siempre usa el constructor Error() para crear errores personalizados
  • Puedes agregar propiedades personalizadas al objeto Error para contexto
  • La propiedad cause (ES2022) permite encadenar errores
  • El stack trace muestra la secuencia de llamadas que causó el error

Introducción al Objeto Error

El objeto Error es el constructor base para todos los errores en JavaScript. Cuando ocurre un error, JavaScript crea automáticamente una instancia de este objeto con información valiosa sobre qué sucedió. Entender cómo funciona el objeto Error y sus propiedades es fundamental para debugging efectivo y manejo de errores robusto.

El objeto Error es mutable, lo que significa que puedes agregar propiedades personalizadas después de crearlo para incluir contexto adicional como códigos de error, información del usuario, timestamps o cualquier dato que ayude a entender y resolver el problema. Esta flexibilidad hace que el objeto Error sea extremadamente útil para debugging en producción.

  • <strong>name</strong>: Tipo de error (Error, TypeError, ReferenceError, etc.)
  • <strong>message</strong>: Descripción legible del problema
  • <strong>stack</strong>: Traza de la pila de llamadas que causó el error
  • <strong>cause</strong>: Error original que causó este error (ES2022)
  • <strong>Propiedades personalizadas</strong>: Cualquier dato adicional que necesites

Crear Objetos Error

Crear objetos Error es directo usando el constructornew Error(mensaje). El mensaje es opcional pero recomendado, ya que proporciona información descriptiva sobre qué salió mal. También puedes crear diferentes tipos de errores usando constructores específicos comoTypeError, ReferenceError, etc.

crear-error.js
Loading code...

Este ejemplo muestra cómo crear objetos Error de diferentes formas. 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.

Siempre proporciona un mensaje descriptivo

Un error con mensaje vacío o genérico como "Error" es inútil para debugging. Siempre incluye información específica: qué parámetro era inválido, qué valor se recibió, qué se esperaba, etc. Esto hace que debugging sea mucho más eficiente.

Propiedades del Objeto Error

El objeto Error tiene tres propiedades estándar que están disponibles en todos los navegadores modernos: name, messagey stack. Estas propiedades proporcionan toda la información necesaria para entender qué ocurrió y dónde ocurrió en tu código.

propiedades-error.js
Loading code...

Este ejemplo muestra las propiedades del objeto Error en acción. La propiedad name indica el tipo de error, messagedescribe el problema en lenguaje natural y stack muestra la secuencia completa de llamadas que llevaron al error, lo cual es invaluable para debugging.

  • <strong>name</strong>: Identifica el tipo de error (Error, TypeError, etc.)
  • <strong>message</strong>: Descripción legible del problema
  • <strong>stack</strong>: Muestra la secuencia de llamadas hasta el error

Propiedades Personalizadas

Una de las características más poderosas del objeto Error es que puedes agregar propiedades personalizadas para incluir contexto adicional. Esto es especialmente útil para debugging, logging y manejo de errores en producción donde necesitas más información de la que proporcionan las propiedades estándar.

propiedades-personalizadas.js
Loading code...

Este ejemplo muestra varios patrones para agregar propiedades personalizadas a objetos Error. Puedes agregar información de validación, contexto de operación, detalles de API, información de debugging o cualquier dato que ayude a entender y resolver el problema.

Agrega contexto relevante al error

Cuando agregues propiedades personalizadas, incluye información que sea relevante para debugging: qué operación falló, qué datos se procesaron, qué usuario estaba involucrado, timestamp, etc. Esta información es invaluable cuando necesitas investigar errores en producción.

La Propiedad cause

La propiedad cause fue introducida en ES2022 y permite encadenar errores de forma estructurada. Cuando un error causa otro error, puedes envolver el error original en uno nuevo y asignarlo a la propiedadcause. Esto mantiene la cadena de errores completa y facilita debugging.

cause-property.js
Loading code...

Este ejemplo muestra cómo usar la propiedad cause para encadenar errores. Puedes envolver errores con contexto adicional, crear cadenas de errores múltiples niveles de profundidad, y verificar si existe una causa antes de acceder a ella para mantener compatibilidad con navegadores antiguos.

Verifica compatibilidad de cause

La propiedad cause es relativamente nueva (ES2022) y puede no estar disponible en navegadores antiguos. Siempre verifica si existe antes de usarla con if (error.cause) o usa el operador opcionalerror.cause?.message.

Stack Trace

El stack trace es una de las propiedades más valiosas del objeto Error. Muestra la secuencia completa de llamadas a funciones que llevaron al error, incluyendo nombres de funciones y números de línea. Esta información es invaluable para debugging.

stack-trace.js
Loading code...

Este ejemplo muestra un stack trace básico. La propiedadstack es generada automáticamente por JavaScript y contiene toda la información sobre la secuencia de llamadas. El artículo dedicado sobre Stack Trace cubre en detalle cómo interpretar y trabajar con stack traces en diferentes navegadores.

No modifiques el stack trace

El stack trace es generado automáticamente por JavaScript y no debe ser modificado manualmente. Modificarlo puede romper herramientas de debugging y hacer que sea imposible rastrear el origen real del error. Si necesitas información adicional, agrega propiedades personalizadas en lugar de modificar el stack.

Errores Comunes

Al trabajar con el objeto Error, hay varios errores comunes que los desarrolladores cometen. Estos errores pueden hacer debugging más difícil, perder información importante o causar comportamientos inesperados en tu aplicación.

errores-comunes.js
Loading code...

Este ejemplo muestra los cinco errores más frecuentes: no usar el constructorError, usar mensajes genéricos sin contexto, modificar elstack trace, ignorar la propiedad cause al encadenar errores, y no agregar contexto adicional al re-lanzar errores.

Siempre usa el constructor Error

Nunca lances strings, números u otros valores como errores. Siempre usanew Error("mensaje") o constructores específicos comonew TypeError("mensaje"). Esto garantiza que el error tenga las propiedades estándar name, message ystack que son esenciales para debugging.

Patrones Útiles

Hay varios patrones comunes que utilizan el objeto Error para crear errores más informativos y fáciles de depurar. Estos patrones van desde errores simples con códigos personalizados hasta errores complejos con múltiples niveles de información de contexto.

patrones-utiles.js
Loading code...

Este ejemplo muestra patrones prácticos: errores con códigos personalizados, errores con información de validación, errores con causa y contexto, errores con información de debugging, errores con múltiples validaciones, errores con información de API y errores con información de usuario.

  • <strong>Error con código</strong>: Agregar códigos de error para identificación
  • <strong>Error de validación</strong>: Incluir campo y valor que fallaron
  • <strong>Error con causa</strong>: Encadenar errores manteniendo el original
  • <strong>Error de debugging</strong>: Agregar información técnica para debugging

Resumen: Objeto Error

Conceptos principales:

  • El objeto Error tiene propiedades name, message y stack
  • Puedes agregar propiedades personalizadas para contexto adicional
  • La propiedad cause (ES2022) permite encadenar errores
  • El stack trace muestra la secuencia de llamadas hasta el error
  • El objeto Error es mutable, puedes agregar propiedades después de crearlo

Mejores prácticas:

  • Siempre usa el constructor Error para crear errores
  • Proporciona mensajes descriptivos con contexto específico
  • Agrega propiedades personalizadas relevantes para debugging
  • Usa la propiedad cause para encadenar errores
  • Nunca modifiques el stack trace manualmente