throw()
method resumes the execution of a generator by throwing an error into it and returns an object with two properties
done
and
value
.
gen.throw(exception)
exception
instanceof
Error
.
Object
with two properties:
done
(boolean)
true
if the iterator is past the end of the iterated sequence. In this case
value
optionally specifies the
返回值
of the iterator.
false
if the iterator was able to produce the next value in the sequence. This is equivalent of not specifying the
done
property altogether.
value
done
is
true
.
throw()
The following example shows a simple generator and an error that is thrown using the
throw
method. An error can be caught by a
try...catch
block as usual.
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 }
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Generator.prototype.throw' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
throw
|
Chrome 39 | Edge 13 | Firefox 26 | IE No | Opera 26 | Safari 10 | WebView Android 39 | Chrome Android 39 | Firefox Android 26 | Opera Android 26 | Safari iOS 10 | Samsung Internet Android 4.0 |
nodejs
4.0.0
|
完整支持
不支持
用户必须明确启用此特征。
Generator
Generator.prototype.next()
Generator.prototype.return()
Generator.prototype.throw()
Function
Object
Object.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.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()