Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
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 septiembre de 2021.
Los datos de la propiedadcause de una instancia deError 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.
In this article
Valor
El valor que se pasó al constructor delError() en el argumentooptions.cause. Puede no estar presente.
Atributos de la propiedadError: cause | |
|---|---|
| Sobrescribir | Sí |
| Numerable | No |
| Configurable | Sí |
Descripción
El valor decause puede ser de cualquiér tipo. No debe suponer que el error que capturó tiene unError como sucause, de la misma manera que no puede estar seguro que la variable enlazada en la instruccióncatch 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 nuevoError, como se muestra.
try { connectToDatabase();} catch (err) { throw new Error("Falló la conexión a la base de datos.", { cause: err });}Para un ejemplo mas detallado veaError > 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.
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® 2026 Language Specification> # sec-installerrorcause> |