Baseline Widely available
Die throw()
-Methode von Generator
-Instanzen wirkt so, als ob eine throw
-Anweisung an der aktuellen angehaltenen Position im Körper des Generators eingefügt wird. Dies informiert den Generator über einen Fehlerzustand und ermöglicht es ihm, den Fehler zu behandeln, Bereinigungen durchzuführen oder sich selbst zu schlieÃen.
generatorInstance.throw(exception)
Parameter
exception
Die zu werfende Ausnahme. Für Debugging-Zwecke ist es nützlich, sie zu einem instanceof
Error
zu machen.
Wenn die geworfene Ausnahme von einem try...catch
abgefangen wird und der Generator fortfährt, weitere Werte zu liefern, wird ein Object
mit zwei Eigenschaften zurückgegeben:
done
Ein boolescher Wert:
true
, wenn der Kontrollfluss der Generatorfunktion das Ende erreicht hat.false
, wenn die Generatorfunktion in der Lage ist, weitere Werte zu erzeugen.value
Der aus dem nächsten yield
-Ausdruck gelieferte Wert.
TypeError
Wird geworfen, wenn der Generator bereits läuft.
Wenn die exception
nicht innerhalb der Generatorfunktion von einem try...catch
abgefangen wird, wird sie auch an den Aufrufer von throw()
geworfen.
Die throw()
-Methode kann, wenn sie aufgerufen wird, als ob eine throw exception;
-Anweisung an der aktuellen angehaltenen Position im Körper des Generators eingefügt wird, betrachtet werden, wobei exception
die an die throw()
-Methode übergebene Ausnahme ist. Daher wird der Generator bei einem typischen Ablauf durch das Aufrufen von throw(exception)
werfen. Wenn der yield
-Ausdruck jedoch in einem try...catch
-Block eingeschlossen ist, kann der Fehler abgefangen und der Kontrollfluss entweder nach der Fehlerbehandlung fortgesetzt oder geordnet beendet werden.
Das folgende Beispiel zeigt einen Generator und einen Fehler, der mit der throw
-Methode geworfen wird. Ein Fehler kann wie üblich von einem try...catch
-Block abgefangen werden.
function* gen() {
while (true) {
try {
yield 42;
} catch (e) {
console.log("Error caught!");
}
}
}
const g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Something went wrong"));
// "Error caught!"
// { value: 42, done: false }
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4