Skip to content

Instantly share code, notes, and snippets.

@thejohnfreeman
Last active January 7, 2019 19:18
Show Gist options
  • Save thejohnfreeman/0dcec05919eacf391a9fcb23e9694e38 to your computer and use it in GitHub Desktop.
Save thejohnfreeman/0dcec05919eacf391a9fcb23e9694e38 to your computer and use it in GitHub Desktop.
function* g() {
try {
yield 1 // throws 'first error'
} catch (error) { // catches 'first error'
console.error('inside generator', error)
}
yield 2 // throws but does not catch 'second error'
return 3 // never reached because exception thrown
}
const generator = g()
generator.next() // { value: 1, done: false }
generator.throw('first error') // { value: 2, done: false }
try {
generator.throw('second error') // exception escapes generator
} catch (error) { // catches 'second error'
console.error('outside generator', error)
}
generator.next() // { value: undefined, done: true }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment