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 Language Specification
# sec-installerrorcause

Compatibilidad con navegadores

BCD tables only load in the browser

Véase también