PHANTOM
🇮🇳 IN

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

Generator : méthode throw()

Baseline Widely available

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

La méthode throw() des instances de Generator agit comme si une instruction throw était insérée dans le corps du générateur à la position actuelle de suspension, ce qui informe le générateur d'une condition d'erreur et permet au générateur de gérer l'erreur, ou d'effectuer un nettoyage et de se fermer.

Syntaxe

js
generatorInstance.throw(exception)

Paramètres

exception

L'exception à lever. Pour le débogage, il est utile d'en faire une instance de Error.

Valeur de retour

Si l'exception levée est interceptée par un bloc try...catch et que le générateur reprend pour produire d'autres valeurs, il retourne un Object avec deux propriétés :

done

Une valeur booléenne :

  • true si le flot d'exécution de la fonction génératrice a atteint la fin.
  • false si la fonction génératrice peut encore produire des valeurs.
value

La valeur produite par la prochaine expression yield.

Exceptions

TypeError

Levée si le générateur est déjà en cours d'exécution.

Si l'exception n'est pas interceptée par un bloc try...catch à l'intérieur de la fonction génératrice, elle est également levée vers l'appelant de throw().

Description

La méthode throw(), lorsqu'elle est appelée, agit comme si une instruction throw exception; était insérée dans le corps du générateur à la position de suspension actuelle, où exception est l'exception passée à la méthode throw(). Ainsi, dans un flot typique, appeler throw(exception) fait lever une exception par le générateur. Cependant, si l'expression yield est enveloppée dans un bloc try...catch, l'erreur peut être interceptée et le flot d'exécution peut soit reprendre après la gestion de l'erreur, soit se terminer proprement.

Exemples

Utiliser la méthode throw()

Dans l'exemple suivant, on utilise un générateur simple et on génère une exception grâce à la méthode throw. Une exception peut être interceptée avec un bloc try...catch usuel.

js
function* gen() {
  while (true) {
    try {
      yield 42;
    } catch (e) {
      console.log("Erreur interceptée !");
    }
  }
}

const g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Quelque chose s'est mal passé"));
// "Erreur interceptée !"
// { value: 42, done: false }

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-generator.prototype.throw

Compatibilité des navigateurs

Voir aussi