[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Error/cause [Back]  [Original]

Error : proprit cause - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Error : proprit cause

Baseline Large disponibilit

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2021.

La proprit de donnes cause d'une instance de Error indique la cause initiale spcifique de l'erreur.

Elle est utilise lors de la capture et de la relance d'une erreur avec un message plus spcifique ou utile afin de conserver l'accs l'erreur originale.

Dans cet article

Valeur

La valeur qui a t passe au constructeur Error() dans l'argument options.cause. Elle peut tre absente.

Attributs de Error : proprit cause
crivableOui
numrableNon
ConfigurableOui

Description

La valeur de cause peut tre de n'importe quel type. Vous ne devez pas supposer que l'erreur attrape a une Error comme cause, de la mme manire que vous ne pouvez pas tre sr que la variable lie dans l'instruction catch est une Error. L'exemple  Fournir des donnes structures comme cause d'erreur  cidessous montre un cas o une valeur sans erreur est dlibrment fournie comme cause.

Les sousclasses SuppressedError et AggregateError servent toutes deux associer plusieurs erreurs. Elles reprsentent toutes deux plusieurs sites de dfaillance : SuppressedError reprsente une erreur survenue lors du traitement d'une autre erreur, tandis que AggregateError reprsente un ensemble d'erreurs multiples et non lies survenues pendant la mme opration. La proprit cause reprsente un seul site dfaillant, l'erreur englobante n'ajoutant que du contexte la cause sans reprsenter une dfaillance supplmentaire.

L'utilisation typique de cause est la suivante. Il y a un seul site dfaillant, qui prend naissance dans logiquePrincipale(). L'instruction throw new Error() n'enveloppe que cette erreur originale pour ajouter du contexte et ne constitue pas une dfaillance supplmentaire.

js
try {
  logiquePrincipale();
} catch (err) {
  throw new Error("La logique principale a chou", { cause: err });
}

L'exemple suivant illustre l'utilisation typique de SuppressedError. Il y a deux sites de dfaillance : l'un dans logiquePrincipale() et l'autre dans nettoyage(). L'instance SuppressedError associe les deux erreurs.

js
try {
  logiquePrincipale();
} catch (erreurPrincipale) {
  try {
    nettoyage();
  } catch (erreurNettoyage) {
    throw new SuppressedError(
      erreurNettoyage,
      erreurPrincipale,
      "La logique principale a chou ; lors du traitement, le nettoyage a galement chou",
    );
  }
}

L'exemple suivant illustre l'utilisation typique de AggregateError. Il y a plusieurs sites de dfaillancev dans logiquePrincipale(). L'instance AggregateError associe toutes les erreurs.

js
function logiquePrincipale() {
  const errors = [];
  try {
    operation1();
  } catch (e1) {
    errors.push(e1);
  }
  try {
    operation2();
  } catch (e2) {
    errors.push(e2);
  }
  if (errors.length > 0) {
    throw new AggregateError(errors, "Plusieurs oprations ont chou");
  }
}

Exemples

Relancer une erreur avec une cause

Il est parfois utile d'attraper une erreur et de la relancer avec un nouveau message. Dans ce cas, vous devez passer l'erreur originale au constructeur de la nouvelle Error, comme montr.

js
try {
  connectToDatabase();
} catch (err) {
  throw new Error("chec de la connexion  la base de donnes.", {
    cause: err,
  });
}

Pour un exemple plus dtaill, voir Error > Distinguer des erreurs semblables.

Fournir des donnes structures comme cause d'erreur

Les messages d'erreur rdigs pour un humain peuvent tre inappropris pour un traitement automatique puisqu'ils sont susceptibles d'tre reformuls ou modifis dans leur ponctuation, ce qui peut casser tout parseur conu pour les consommer. Ainsi, lorsqu'on lance une erreur depuis une fonction, en alternative un message lisible par un humain, on peut fournir la cause sous forme de donnes structures, pour le traitement automatique.

js
function makeRSA(p, q) {
  if (!Number.isInteger(p) || !Number.isInteger(q)) {
    throw new Error(
      "La gnration de cls RSA ncessite des entres entires.",
      {
        cause: { code: "NonInteger", values: [p, q] },
      },
    );
  }
  if (!areCoprime(p, q)) {
    throw new Error(
      "La gnration de cls RSA ncessite deux entiers premiers entre eux.",
      {
        cause: { code: "NonCoprime", values: [p, q] },
      },
    );
  }
  // rsa algorithm
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-installerrorcause

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page