Reactjs 抛出错误时,如何读取错误数据
我正在尝试读取/处理React JS项目中的错误案例,但无法解析/读取catch中的错误数据。 无法从错误数据中获取“代码”字段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 }) }捕获(错误
试试看{
分派({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");
}
}