Generator.prototype.throw()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since ÑенÑÑбÑÑ 2016 г..
ÐеÑод throw() возобновлÑÐµÑ Ð²Ñполнение Ñела генеÑаÑоÑа ÐºÐ¸Ð´Ð°Ñ Ð²Ð½ÑÑÑи иÑклÑÑение и возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ñо ÑвойÑÑвами done и value.
СинÑакÑиÑ
gen.throw(exception)
ÐаÑамеÑÑÑ
ÐозвÑаÑаемое знаÑение
ÐбÑÐµÐºÑ Ñ Ð´Ð²ÑÐ¼Ñ ÑвойÑÑвами:
-
done(boolean)- ÐÐ¼ÐµÐµÑ Ð·Ð½Ð°Ñение
trueеÑли iterator пÑоÑÑл ÐºÐ¾Ð½ÐµÑ Ð¸ÑеÑиÑÑемой поÑледоваÑелÑноÑÑи. Ð ÑÑом ÑлÑÑаеvalueопÑионалÑно опÑеделÑеÑÑÑ Ð²ÑÑажением return value внÑÑÑи иÑеÑаÑоÑа . - ÐÐ¼ÐµÐµÑ Ð·Ð½Ð°Ñение
falseеÑли iterator Ð¸Ð¼ÐµÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð²ÐµÑнÑÑÑ ÑледÑÑÑее знаÑение поÑледоваÑелÑноÑÑи. ÐÑо ÑавноÑилÑно когда ÑвойÑÑво done не Ñказано.
- ÐÐ¼ÐµÐµÑ Ð·Ð½Ð°Ñение
-
value- лÑбое JavaScript знаÑение, возвÑаÑÑнное иÑеÑаÑоÑом. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑоигноÑиÑовано, когдаdone===true.
ÐÑимеÑÑ
>ÐÑполÑзование throw()
Ð ÑÑом пÑимеÑе показан пÑоÑÑой генеÑаÑÐ¾Ñ Ð¸ иÑклÑÑение, коÑоÑое вÑбÑаÑÑваеÑÑÑ Ð¸ÑполÑзÑÑ Ð¼ÐµÑод throw. ÐÑклÑÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð¹Ð¼Ð°Ð½Ð¾, иÑполÑзÑÑ, как обÑÑно, блок try...catch.
function* gen() {
while (true) {
try {
yield 42;
} catch (e) {
console.log("Error caught!");
}
}
}
var g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Something went wrong"));
// "Error caught!"
// { value: 42, done: false }
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-generator.prototype.throw> |