Javascript Axios不会抓住你的

Javascript Axios不会抓住你的,javascript,reactjs,axios,Javascript,Reactjs,Axios,我得到了下面的函数,但是当它遇到错误时,它没有去捕捉它,而是直接去了。请注意,这是有效的,我只是试图迫使捕获 const AddMainItem = HPSMainObject => { let data = JSON.stringify(HPSMainObject); const request = axios({ method: "POST", url: getMainUrl( "web/lists/GetByTitle('" +

我得到了下面的函数,但是当它遇到错误时,它没有去捕捉它,而是直接去了。请注意,这是有效的,我只是试图迫使捕获

const AddMainItem = HPSMainObject => {
  let data = JSON.stringify(HPSMainObject);

  const request = axios({
    method: "POST",
    url: getMainUrl(
      "web/lists/GetByTitle('" +
        MAINITEMGENERALINFO.mainItemRelatedObject.mainList.title +
        "')/Items"
    ),
    data: data,
    headers: INTERNALCONFIG.PostHeader
  });

  return request.then(result => result.data.d).catch(error => error);
};
我用这个称呼它,你能告诉我最好的做法是什么吗

handleSubmit = () => {
    let self = this;
    AddMainItem(self.state.HPSMainObject)
      .then(function(AddMainItemResult) {
        console.log("its working");
      })
      .catch(function(errorMessage) {
        console.log("Error AddMainItem: ", errorMessage);
      });
}
这一行:

.catch(error => error)
…将拒绝的承诺转换为解决错误的承诺。这相当于在同步代码中执行此操作:

try {
  doSomething();
} catch (error) {
  return error; // The function is no-longer throwing
}
看来你想做的是:

.catch(error => { throw error; })
…但这是多余的。只要省略catch,调用方的
catch
就会生效。

这一行:

.catch(error => error)
…将拒绝的承诺转换为解决错误的承诺。这相当于在同步代码中执行此操作:

try {
  doSomething();
} catch (error) {
  return error; // The function is no-longer throwing
}
看来你想做的是:

.catch(error => { throw error; })

…但这是多余的。只要省略catch,调用者的
catch
就会生效。

只是为了确保我理解正确,当你说省略catch时,你的意思是我只是删除handleSubmit函数中的catch,并在AddMainItem中保留.error?是的,没错。要么这样,要么在接球后确保你再投。谢谢你指出我的错误!我不知道我怎么会忘记它会继续返回承诺链。谢谢。但是有一个问题,如果我想做一个调用函数(handleSubmit),该怎么办获取错误消息?因为我计划在其他函数出现错误时调用该函数,以确保我理解正确,当你说“忽略捕获”时,你的意思是我只是删除handleSubmit函数中的捕获,并在AddMainItem中保留.error?是的,没错。要么这样,要么在接球后确保你再投。谢谢你指出我的错误!我不知道我怎么会忘记它会继续返回承诺链。谢谢。但有一个问题,如果我想让一个调用函数(handleSubmit)得到错误消息,该怎么办?因为我计划在另一个函数出错时调用该函数