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}