Error: cause

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

Los datos de la propiedad cause de una instancia de Error indica la causa original del error específico.

Se utiliza cuando se captura y se relanza un error con un mensaje de error más específico ó útil para seguir teniendo acceso al error original.

Valor

El valor que se pasó al constructor del Error() en el argumento options.cause. Puede no estar presente.

Atributos de la propiedad Error: cause
Sobrescribir
NumerableNo
Configurable

Descripción

El valor de cause puede ser de cualquiér tipo. No debe suponer que el error que capturó tiene un Error como su cause, de la misma manera que no puede estar seguro que la variable enlazada en la instrucción catch sea un error tampoco. El siguiente ejemplo "Proporcionar datos estructurados como la causa del error" muestra un caso donde se proporciona deliberadamente un error como causa.

Ejemplos

Relanzando un error con una causa

A veces es útil para detectar un error y volver a lanzarlo con un nuevo mensaje. En este caso debería pasar el error original al constructor para el nuevo Error, como se muestra.

js
try {
  connectToDatabase();
} catch (err) {
  throw new Error("Falló la conexión a la base de datos.", { cause: err });
}

Para un ejemplo mas detallado vea Error > Diferenciar entre errores similares.

Proporcionar datos estructurados como la causa del error

Los mensajes de error escritos para consumo humano pueden ser inapropiados para el análisis de la máquina — dado que están sujetos a cambios de redacción o puntuación que pueden romper cualquier análisis existente escrito para consumirlos. Así que, cuando lanza un error de una función, como una alternativa a un mensaje de error legible por humanos, puede proporcionar la causa como datos estructurados, para el análisis de la máquina.

js
function makeRSA(p, q) {
  if (!Number.isInteger(p) || !Number.isInteger(q)) {
    throw new Error(
      "La generación de claves RSA requiere entradas de tipo entero.",
      {
        cause: { code: "NonInteger", values: [p, q] },
      },
    );
  }
  if (!areCoprime(p, q)) {
    throw new Error(
      "La generación de claves RSA requiere dos enteros coprimos.",
      {
        cause: { code: "NonCoprime", values: [p, q] },
      },
    );
  }
  // algoritmo rsa...
}

Especificaciones

Specification
ECMAScript® 2025 Language Specification
# sec-installerrorcause

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
cause
Cause is displayed in console
Non-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.

Véase también