在前端开发中,根据后台的自定义接口状态码把错误放到catch中处理合适吗。

通过axios拦截器,如果后台返回的自定义状态码不是成功的状态码,可以直接reject到catch中去吗?然后在catch函数中做错误处理,信息提示。这种做法合适吗?

request.get('xxx')
.then(res=>{
    // 这里不进行res.code===成功判断
    /****逻辑处理****/
})
.catch(res=>{
    //这里是状态码不为成功的时候的处理逻辑
    if(res.code === 10001){
        //错误状态10001
    }
    if(res.code === 10002){
        //错误状态10002
    }
})
阅读 1.5k
1 个回答

说合适也可以,不合适也可以,估计也有一部分开发者会这样做,

但是这样的话无形当中多了一步消耗,更合理的应该是抽象整理一个方法来统一处理后端的非成功的状态码

更推荐这样做。

2022-01-09 更新

request.get('xxx')
.then(res=>{
    // 这里不进行res.code===成功判断
    /****逻辑处理****/

    //这里才是状态码不为成功的时候的处理逻辑
})
.catch(res=>{     

//你这里不是状态码不为成功的时候的处理逻辑,而不是报错的以后的处理逻辑,
//而且的参数不是res ,而是err ,而且你这个写法有问题,并且已经不是现在推荐的了。
    

//这里是状态码不为成功的时候的处理逻辑
    if(res.code === 10001){
        //错误状态10001
    }
    if(res.code === 10002){
        //错误状态10002
    }
})

改写:

try{
    let res = await request.get('xxx');
    if(res.code == 1/或者其他){
        成功的时候的处理逻辑
    }else{
        这里才是状态码不为成功的时候的处理逻辑
    }
}catch(err){
    //报错的以后的处理逻辑
    console.log(err)
}

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