Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 抛出错误时,如何读取错误数据_Reactjs_React Redux - Fatal编程技术网

Reactjs 抛出错误时,如何读取错误数据

Reactjs 抛出错误时,如何读取错误数据,reactjs,react-redux,Reactjs,React Redux,我正在尝试读取/处理React JS项目中的错误案例,但无法解析/读取catch中的错误数据。 无法从错误数据中获取“代码”字段 试试看{ 分派({type:types.READ_DATA}) const response=wait new DataApi().readData(action.payload); processResponse(响应,[200],“读取数据失败”,分派); 派遣({ 类型:types.DATA\u READ, 数据:response.data }) }捕获(错误

我正在尝试读取/处理React JS项目中的错误案例,但无法解析/读取catch中的错误数据。 无法从错误数据中获取“代码”字段

试试看{
分派({type:types.READ_DATA})
const response=wait new DataApi().readData(action.payload);
processResponse(响应,[200],“读取数据失败”,分派);
派遣({
类型:types.DATA\u READ,
数据:response.data
})
}捕获(错误){
console.error(“中间件.CATCH错误:”,error);
分派({type:types.DATA_失败,数据:{Code:error.Code}})
}
const processResponse=(响应、OK代码、错误消息、调度)=>{
if(响应和响应状态){
if(okCodes.indexOf(response.status)<0){
errorHandler(响应、状态、调度);
抛出错误({code:response.status,message:errorMessage});
}
}否则{
抛出错误(“错误读取响应状态”);
}
}

使用
console.error(JSON.stringify(error))
以字符串格式获取对象。

现在,当我试图读取错误代码时,得到的是空字符串{}catch(error){var errordata=JSON.stringify(error);console.error(“MIDDLEWARE.catch error:”,errordata);dispatch({type:types.NEXTNURSINGTIMES_失败,数据:{Code:errordata.Code}}}在分派调用中使用error.Code。仅在console.error中使用errordata。JSON.stringify(error)仍然打印空字符串{},并且该error.Code未定义,因此分派无法工作。您能再帮我一点忙吗?{}表示对象为空,因此
error
是空对象。您需要检查
try
块中抛出错误的函数的代码。我将正确获取HTTP状态代码并将其传递给processResponse函数,在该函数中抛出错误({code:response.Status,message:errorMessage});message参数只是以防万一,如果以后需要更多信息。在catch(erro)中执行此操作之后,我尝试读取此http状态代码并将其传递(dispatch),以便调用组件可以处理这种情况。
try {
  dispatch({ type: types.READ_DATA })
  const response = await new DataApi().readData(action.payload);
  processResponse(response, [200], "Read data failed", dispatch);
  dispatch({
    type: types.DATA_READ,
    data: response.data
  })
} catch (error) {
  console.error("MIDDLEWARE. CATCH ERROR: ", error);
  dispatch({ type: types.DATA_FAILED, data: { Code: error.code } })
}

const processResponse = (response, okCodes, errorMessage, dispatch) => {
if (response && response.status) {
  if (okCodes.indexOf(response.status) < 0) {
    errorHandler(response.status, dispatch);
    throw Error({ code: response.status, message: errorMessage });
  }
} else {
  throw Error("Error reading response status");
}
}