在 js 中如何中止代码往下执行并且不报错

在 vue 中封装公共的 axios 配置
axios 请求响应拦截

axios.interceptors.response.use((res) => {
  return res
}, (err) => {
  //接口请求失败后,直接返回失败的 Promise
  return Promise.reject(error) 
})

axios(config).then( res => {
    // 请求成功
    if(res.code === 200){
        
    }else{
        // 报个错,所有的错误让下面的 catch 统一处理
        throw res
    }

}).catch( err => {
    // 
    alert(err.message)
    //在 catch 中使用 throw,如果catch后面还有then,则只会执行到这里的catch,后面的then不再执行
    //这个解决的我的问题,但问题是 throw 会在控制台中输出错误信息,我并不希望它输出错误信息,也不想让它继续往下执行
    throw err
})

大佬们帮忙看下吧,困扰了好长时间了

阅读 5.3k
2 个回答
axios(config).then( res => {
    // 请求成功
    if(res.code === 200){
        
    }else{
        // 报个错,所有的错误让下面的 catch 统一处理
        throw res
    }

}).catch( err => {
    // 
    alert(err.message)
    //在 catch 中使用 throw,如果catch后面还有then,则只会执行到这里的catch,后面的then不再执行
    //这个解决的我的问题,但问题是 throw 会在控制台中输出错误信息,我并不希望它输出错误信息,也不想让它继续往下执行
    throw err
})
.then(...)
.then(...)
.thne(...)
.catch(err => {
    // 在最后再加一个 catch ,
    // 不要 throw ,阻止错误信息
})

为啥不用 Promise.reject 呢?如果你 catch 住错误后,还想往下传给别的 catch. 就return Promise.reject()就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题