Як обробляти помилки Promise?
Обробка помилок у промісах у JavaScript є фундаментальною навичкою для створення стабільних і надійних вебдодатків. Основним інструментом для цього слугує метод .catch(error => {}), який перехоплює будь-які збої та відхилення, що виникають у попередніх кроках асинхронного ланцюжка. Альтернативним варіантом є передача другого аргументу в метод .then(null, onRejected), проте на практиці перший спосіб використовується набагато частіше завдяки своїй наочності та зручності читання коду.
Головна перевага методу .catch полягає в тому, що catch ловить усі помилки в ланцюжку, незалежно від того, на якому саме етапі асинхронного виконання стався збій. Це дозволяє централізовано обробляти винятки, а не писати кремезні обробники для кожного окремого кроку. Якщо в процесі виконання коду виникає непередбачена ситуація, виконання перенаправляється в найближчий блок catch.
Важливо пам'ятати про ситуацію, коли проміс відхиляється, але для нього не передбачено жодної обробки. У сучасних середовищах виконання це призводить до виникнення події unhandledrejection на глобальному об'єкті, яка може спричинити аварійне завершення процесу в Node.js або записати попередження в консоль браузера. Щоб уникнути подібних проблем, завжди рекомендується завершувати ланцюжки промісів викликом методу catch.
Для виконання коду, який має бути запущений у будь-якому разі — незалежно від того, чи завершився проміс успішно, чи з помилкою, — використовується метод finally(). Він приймає callback-функцію без аргументів і чудово підходить для очищення ресурсів, закриття з'єднань із базою даних або приховування індикатор завантаження на користувацькому інтерфейсі. Грамотне поєднання всіх цих інструментів дозволяє повністю контролювати життєвий цикл асинхронних операцій у ваших проєктах.