You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在API请求后捕获错误消息?非200状态码处理疑问

解决方案:解析错误响应体后抛出自定义错误

嘿,这个场景我太熟悉了!你说得没错,确实需要先解析错误响应的内容,才能把后端返回的具体错误消息传递到catch块里。直接throw new Error()的话,只能拿到默认的状态文本(比如"Bad Request"),没法获取响应体里的自定义错误信息。

修改后的代码示例

apiService.createNewUser(data)
  .then((response) => { 
    if (response.ok) { 
      return response.json(); 
    } else { 
      // 先解析错误响应的JSON内容,再抛出带具体消息的错误
      return response.json().then(errorBody => {
        // 这里根据后端实际返回的错误字段调整,比如errorBody.msg / errorBody.error等
        const errorMessage = errorBody.message || response.statusText;
        throw new Error(errorMessage);
      });
    } 
  })
  .then((newUserData) => { 
    // 成功逻辑
    console.log('用户创建完成:', newUserData);
  })
  .catch((err) => { 
    console.log('错误详情:', err.message);
  });

关键说明

  • 解析错误响应:当response.ok为false时,不能直接抛出错误,得先调用response.json()(如果后端返回纯文本就用response.text())来读取响应体内容。
  • 自定义错误消息:解析后拿到后端返回的错误数据(比如errorBody.message),用它来构造Error对象;如果后端没返回具体消息,就用response.statusText作为兜底(比如"Bad Request"、"Not Found"等)。
  • 链式处理:因为response.json()返回的是Promise,所以需要在它的then回调里抛出错误,这样上层的catch才能捕获到这个带自定义消息的错误。

如果你的后端返回的错误结构不是message字段,比如errorBody.error或者errorBody.msg,记得对应调整代码里的字段名哦~

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:06:30