new Promise(resolve=>{
setTimeout(()=>{
throw new Error("bye");
},2000);
})
.then(value=>{
console.log(value+" world");
})
.catch(error=>{//实测发现这个函数并不会被执行
console.log("Error1: ",error.message);
})这里我特意把Error改成了Error1,因为代码报错本身就是显示:Error:bye的,我改成了Error1后还是显示Error:bye,我也添加了一些其他的输出语句,都不执行,由此可见,catch里面的函数不会执行
望解答
3.3错误处理一节,课程里讲的不对。 计时器里抛出的异常并不能被catch 捕获到。
new Promise((resolve,reject)=>{
setTimeout(()=>{
//此处抛出的异常是因为没有被捕获所以会在控制台被打印出来。
throw new Error("bye");
},2000);
// throw new Error("bye2") //同步的方式执行会被promise处理成reject立即调用,可以被后面的catch捕获到
})
.then(value=>{
console.log(value+" world");
})
.catch(error=>{//
//并没有执行 如果
console.log("Error1: ",error.message);
})
new Promise(resolve=>{
setTimeout(()=>{
resolve("hello")
},2000);
})
.then(value=>{
throw new Error("bye");
console.log(value+" world");
})
.catch(error=>{//实测发现这个函数只会处理then中的错误,不能处理new Promise参数函数中的错误
console.log("Error1: ",error.message);
})