@Fly3110
web developer

Как правильно организовать логику обработки ошибок?

Всем привет.

Есть SPA на vue.js.
Есть свой wrapper для вызовов к API. На некоторые коды ошибок реакция должна быть всегда однозначная (просто показ сообщения с текстом ошибки), на другие коды должна быть индивидуальная реакция в зависимости от...

Я хочу, чтобы сообщение об ошибках показывал wrapper, а если ошибка требует индивидуальной обработки, то не делал бы ничего.

Все общение с API построено на промисах.
Элементарный пример:

this.$apiImpl.users.index()
.then(response => {
  //....
})
.catch(error => {
  //....
})
.finally(() => {
  //....
})


внутри $api.index() происходит
axios.get(...)
.catch(error => {
  if (!...)  return Promise.reject(error); // если ошибка обрабатывается индивидуально

  // делаем все, что нужно (показываем сообщение)
  return Promise.reject('error_handled')
})


в этом подходе дико не нравится то, что в любом catch'е, приходится проверять, if ('error_handled' === error) return;

Есть какой-то красивый способ это решить?
Можно возвращать из wrapper'a неразрешенный промис, тогда в catch выполнение вообще не попадет (допустимо), но и finally тогда не отработает (недопустимо).

Спасибо.
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы