当前位置:网站首页>es6Generator函数的异常处理
es6Generator函数的异常处理
2022-08-09 11:09:00 【一头小驴】
如下四个例子,两组,你能看懂了,也就了解了7788.这些可能你觉得有些枯燥,但是有一个好的es6基础,你就会觉得vue,angular,nodejs,react等等都是那么的小菜一碟。
第一组
var gen = function* gen(){
try {
yield console.log('a');
} catch (e) {
//注意,在这里捕获了g.throw()抛出的异常,异常处理掉了,程序可以正常向下执行
console.log('a后异常'+e);
}
try {
yield console.log('b');
} catch (e) {
console.log('b后异常'+e);
}
yield console.log('c');
}
var g = gen();
g.next()
g.throw()
g.next()
//输出 a 异常undefined b c
var gen = function* gen(){
//用try catch将 所有的yield包裹住,那么一旦中间出现异常,直接到达catch ,后续的yield都将不会执行了
try {
yield console.log('a');//第二次g.next()或者g.throw()从这里开始执行,接收到异常就会到达catch语句,这时候如果再次执行g.next()或者g.throw()就会报错
yield console.log('b');
yield console.log('c');
yield console.log('d');
yield console.log('e');
} catch (e) {
console.log('内部报错Error'+e)
}
}
var g = gen();
g.next() // a
//throw之后,后面的 g.next()都不会再执行了
g.throw() ;//内部报错undefined
//下面的执行会报错
g.next()
g.throw()
g.next()
第二组
var g = function* () {
try{
while(true){
yield console.log("打卡");
}
}
catch(e){
console.log('内部捕获', e);
}
};
var i = g();
try {
i.next();
i.next();
i.throw('a');//这个时候进入到 g最后的catch语句,后续的yield都不会执行了
i.throw('b');//执行会报错,并且被当前catch捕获(当前语句的catch),到达catch,那么下面的语句都不会执行了
i.throw('c');
i.next();
} catch (e) {
console.log('外部捕获', e);
}
// 打卡
// 打卡
// 内部捕获 a
// 外部捕获 b
//如下这个,你可以无限执行i.next();或者i.throw();
var g = function* () {
while(true){
try{
yield console.log("打卡");
}
catch(e){
console.log('内部捕获', e);
}
}
};
var i = g();
i.next();
try {
i.next(); //打卡
i.next(); //打卡
i.throw('a'); //打卡 内部捕获 a
i.throw('b'); //打卡 内部捕获 b
i.throw('c'); //打卡 内部捕获 c
i.next(); //打卡
} catch (e) {
console.log('外部捕获', e);
}
边栏推荐
猜你喜欢
实现strcat函数
Multi-merchant mall system function disassembly 26 lectures - platform-side distribution settings
双向链表的各种操作
Number theory knowledge
c语言函数的递归调用(汉诺塔问题,楼梯递归问题等)
【精华文】C语言结构体特殊情况分析:结构体指针 / 基本数据类型指针,指向其他结构体
ICML 2022 | Out-of-Distribution Detection with Deep Nearest Neighbors
MySQL传统方案和通过SSH连接哪个好?
Jmeter BeanShell post processor
华为VRRP+MSTP联动接口检测实验案例
随机推荐
Qt获取EXE可执行文件的上一级目录下的文件
RPN principle in faster-rcnn
golang源代码阅读,sync系列-Cond
faster-rcnn learn
Numpy常用操作博客合集
使用.NET简单实现一个Redis的高性能克隆版(四、五)
双向链表的各种操作
bit、byte、KB、M、G、T相互关系
【C language】typedef的使用:结构体、基本数据类型、数组
prometheus接入mysqld_exporter
OpenSSF's open source software risk assessment tool: Scorecards
UNIX哲学
无刷无霍尔BLCD电机控制
GOPROXY 中国代理
golang interface “坑记录“
Product Quantization (PQ)
Qt读写.ini配置文件
百钱买鸡(一)
华为VRRP+MSTP联动接口检测实验案例
1008 Elevator (20分)