JavaScript·100 питань

Як обробляти помилки в async/await?

Відповідь

Правильна обробка помилок в async/await є запорукою створення відмовостійких додатків на JavaScript. Оскільки традиційні методи .catch тут не завжди застосовні напряму до кожного рядка, стандартним підходом є використання класичної конструкції try/catch. Ви загортаєте потенційно небезпечний асинхронний код у блок try { await ... } і в разі виникнення будь-якої проблеми перехоплюєте об'єкт помилки в блоці catch (e) { }, що дозволяє гнучко реагувати на збої, виводити повідомлення користувачеві або логувати інциденти.

Альтернативним варіантом точкової обробки є додавання стандартного методу .catch() безпосередньо на виклику асинхронної функції, що повертає проміс, якщо ви віддаєте перевагу функціональному стилю. Для реалізації обов'язкових завершальних дій, таких як звільнення пам'яті або закриття з'єднань, використовується блок finally, який виконається в самому кінці незалежно від того, чи завершився блок try успіхом, чи зловив виняток. Ви можете успішно комбінувати ці підходи для створення багаторівневого захисту критичних ділянок вашого коду.

Якщо розробник забуває обгорнути виклик асинхронної функції в блок try/catch або не обробляє проміс, що нею повертається, у системі виникають необроблені помилки, які призводять до події unhandledrejection. Щоб додаток не падав несподівано в production-середовищі, рекомендується на рівні глобального додатка налаштувати перехоплення цієї події, що дозволить централізовано збирати статистику збоїв і коректно завершувати критичні фонові процеси.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем