| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
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 mthode throw() des instances de Generator agit comme si une instruction throw tait insre dans le corps du gnrateur la position actuelle de suspension, ce qui informe le gnrateur d'une condition d'erreur et permet au gnrateur de grer l'erreur, ou d'effectuer un nettoyage et de se fermer.
generatorInstance.throw(exception)
Si l'exception leve est intercepte par un bloc try...catch et que le gnrateur reprend pour produire d'autres valeurs, il retourne un Object avec deux proprits :
doneUne valeur boolenne :
true si le flot d'excution de la fonction gnratrice a atteint la fin.false si la fonction gnratrice peut encore produire des valeurs.valueLa valeur produite par la prochaine expression yield.
TypeErrorLeve si le gnrateur est dj en cours d'excution.
Si l'exception n'est pas intercepte par un bloc try...catch l'intrieur de la fonction gnratrice, elle est galement leve vers l'appelant de throw().
La mthode throw(), lorsqu'elle est appele, agit comme si une instruction throw exception; tait insre dans le corps du gnrateur la position de suspension actuelle, o exception est l'exception passe la mthode throw(). Ainsi, dans un flot typique, appeler throw(exception) fait lever une exception par le gnrateur. Cependant, si l'expression yield est enveloppe dans un bloc try...catch, l'erreur peut tre intercepte et le flot d'excution peut soit reprendre aprs la gestion de l'erreur, soit se terminer proprement.
throw()Dans l'exemple suivant, on utilise un gnrateur simple et on gnre une exception grce la mthode throw. Une exception peut tre intercepte avec un bloc try...catch usuel.
function* gen() {
while (true) {
try {
yield 42;
} catch (e) {
console.log("Erreur intercepte !");
}
}
}
const g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Quelque chose s'est mal pass"));
// "Erreur intercepte !"
// { value: 42, done: false }
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-generator.prototype.throw |
function*Cette page a t modifie le 25 fvr. 2026 par les contributeurices du MDN.
GeneratorIteratorObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |