如何处理异步/等待中的API响应错误

时间:2019-02-20 17:37:46

标签: javascript async-await

我试图更好地了解使用异步/等待,第三方库和外部API时的错误处理。

给出以下伪代码:

const createConnectionRequest = async (args) => {
  try {
    const { data } = axios.post(url, args);

    return data;
  } catch (err) {
    throw new Error(err);
  }
}

我的理解是throw可能是axios.post失败的结果,而不是我的请求有问题。

如果我的API的响应为200,但包含某种错误,例如

{
  status: 200,
  error: 'Invalid fields supplied',
}

我会在try块中抛出此错误,并期望父调用函数来catch吗?

const createConnectionRequest = async (args) => {
  try {
    const { data } = axios.post(url, args);
    if (data.error) {
      throw new Error(data.error);
    }

    return data;
  } catch (err) {
    throw new Error(err);
  }
}

...

const processor = async () => {
  try {
    await createConnectionRequest(...);
  } catch (err) {
    // handle error from API response here
    throw new Error(err);
  }
}

0 个答案:

没有答案