06. Generator .throw()
Вызов generator.throw(x)
выполняет throw x
на месте текущего приостановленного yield
. На строке с yield
возникает исключение, которое может быть перехвачено. Если ошибку не перехватить, то она «выпадет» из генератора.
function* gen() {
// В этой строке возникнет ошибка
let result = yield "Сколько будет 2 + 2?";
}
let generator = gen();
let question = generator.next().value;
try {
generator.throw(new Error("ответ не найден в моей базе данных"));
} catch (e) {
alert(e); // выведет ошибку
}
Throwing an exception in a newborn generator (that hasn’t started yet) is allowed:
function* genFunc() {}
genFunc().throw(new Error("Problem!"));
// Error: Problem!
Last updated
Was this helpful?