首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用try和catch语句处理异步http错误

用try和catch语句处理异步http错误
EN

Stack Overflow用户
提问于 2019-03-05 06:10:59
回答 2查看 51关注 0票数 1

我希望这是一个简单的问题:

我正在尝试在ReactJS动作创建者的try和catch语句中实现错误处理。

代码语言:javascript
运行
复制
export const getUserKitchens = () => async dispatch => {
    try{
        const response = await axios.get(
            `${baseURL}customer/get-user-kitchens/`,
         )
        dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
    } catch(e) {
        const msg = "something"
        dispatch(displayStatus(msg, true))
    }
}

如果请求失败,HTTP状态为401,我想注销用户。因此,我需要从catch语句访问Http响应头,并从那里检索HTTP状态。

,这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-05 06:36:17

e语句中的catch对象是一个错误对象。您可以使用error.response.status访问状态代码,使用error.response.headers访问标头。这样的东西应该是有用的:

代码语言:javascript
运行
复制
export const getUserKitchens = () => async dispatch => {
    try{
        const response = await axios.get(
            `${baseURL}customer/get-user-kitchens/`,
         )
        dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
    } catch(e) {
        const status = e.response.status;
        if (status === 401) {
           dispatch({type:LOG_USER_OUT}) //LOG_USER_OUT is a logout action
        } else {
          dispatch(displayStatus(status, true))
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-03-05 06:31:18

根据await MDN docs

等待表达式将导致异步函数执行暂停,直到承诺得到解决,即履行或拒绝,并在实现后恢复异步函数的执行。当恢复时,等待表达的价值就是履行承诺的价值。 如果承诺被拒绝,等待表达式将抛出被拒绝的值。

因此,如果存在API错误,错误对象将被抛出,您将在catch块中获得该对象,并可以使用error.response.statuserror.response.headers从它访问状态和标头。

代码语言:javascript
运行
复制
export const getUserKitchens = () => async dispatch => {
    try{
        const response = await axios.get(
            `${baseURL}customer/get-user-kitchens/`,
         )
        dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
    } catch(e) {
        const status = e.response.status;
        dispatch(displayStatus(status, true))
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54996456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档