为了账号安全,请及时绑定邮箱和手机立即绑定

catch里面的函数不会执行

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里面的函数不会执行

望解答

正在回答

2 回答

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);
})

    

0 回复 有任何疑惑可以回复我~
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);
})


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

catch里面的函数不会执行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信