Как обрабатывать ошибки ответа API в async / await - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь лучше понять обработку ошибок при использовании 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 it?

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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...