Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Generator.prototype.throw()

La méthode throw() lève une erreur dans un générateur.

Syntaxe

gen.throw(exception)

Paramètres

exception
L'exception à lever. On préfèrera généralement utiliser un objet qui est une instance d'Error.

Valeur de retour

Un Object avec deux propriétés :

  • done (un booléen)
    • Qui vaut true lorsque l'itérateur a fini de parcourir la suite. Dans ce cas, value correspondra éventuellement à la valeur de retour de l'itérateur.
    • Qui vaut false si l'itérateur a pu produire la prochaine valeur de la série.
  • value : une valeur renvoyée par l'itérateur. Lorsque done vaut true, cette valeur peut être absente ou valoir undefined.

Exemples

Utiliser 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.

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

var 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

Spécification Statut Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Generator.prototype.throw' dans cette spécification.
Standard Définition initiale.
ECMAScript 2017 Draft (ECMA-262)
La définition de 'Generator.prototype.throw' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple ? 26 (26) ? ? ?
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple ? ? 26.0 (26) ? ? ?

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,