学习阮一峰老师ES6教程,Generator.prototype.throw方法
碰到一个奇怪问题:
这样一段测试代码输出结果为:
i.throw('a')在内部捕获,i.throw('b')就直接异常了,没有被捕获,阮一峰老师对这样的运行结果给了这样的解释:
第一个错误被 Generator 函数体内的catch语句捕获。i第二次抛出错误,由于 Generator 函数内部的catch语句已经执行过了,不会再捕捉到这个错误了,所以这个错误就被抛出了 Generator 函数体,被函数体外的catch语句捕获。
这段解释分析我没有看太明白,所以我改写了一下:
运行结果如下:
很奇怪,为什么外面套了一个while循环,i.throw('b')和i.throw('c')就进入内部循环了呢?看着这打印结果,i.throw怎么就触发while循环了呢?而且还不触发yield表达式,好崩溃呀。再对比上面阮一峰老师的解释分析,还是搞不懂。
慕侠2389804
相关分类