ES6 Generator Function - 4
Error Handling with Try Catch in Generator
by Po-Jung Chen
JavaScript
/**
* Error Handling in Generator
* 我們可以用 iterator.throw() 搭配 try...catch。
* 另外,也可以用 itrator.return() 來改變 value 的值
**/
let hobbies = ['programming', 'biking', 'sports', 'computer', 'royale host']
function* g(hobbies) {
for (let i = 0; i < hobbies.length; i++) {
try {
let valueInNext = yield hobbies[i]
console.log('valueInNext', valueInNext)
} catch (e) {
console.log('error:', e)
}
}
}
let iterator = g(hobbies)
console.log(iterator.next()) // Object {value: "programming", done: false}
console.log(iterator.throw('Some thing Wrong')) // "error: Some thing Wrong", Object {value: "biking", done: false}
console.log(iterator.next('favorite')) // "valueInNext favorite", Object {value: "sports", done: false}
console.log(iterator.next()) // "valueInNext undefined", Object {value: "computer", done: false}
console.log(iterator.return('Give Value Inside')) // Object {value: "Give Value Inside", done: true}
console.log(iterator.next()) // Object {value: undefined, done: true}