TGViewer
JavaScript for Devs JavaScript for Devs @js_for_devs · 491 subscribers
Post #7 359
💡 Ошибки с async/await в JavaScript

Асинхронный код в JavaScript стал проще с появлением async/await, но у него есть коварная ловушка: ошибки в промисах могут «утекать» и не обрабатываться. Это приводит к UnhandledPromiseRejection, который проявляется далеко не сразу и часто маскирует настоящую причину бага.

Решение — всегда оборачивать асинхронный код в обработку ошибок. На уровне функции это try/catch:


async function fetchData(url) {
try {
const res = await fetch(url)
if (!res.ok) {
throw new Error(`HTTP error: ${res.status}`)
}
return await res.json()
} catch (err) {
console.error("Ошибка при получении данных:", err)
throw err // пробрасываем выше, если нужно
}
}


Но есть нюансы:
– Локальный try/catch хорош для точечной обработки (например, показать пользователю алерт).
– Глобальная обработка нужна для неожиданных ошибок: в браузере это window.onunhandledrejection, в Node.js — process.on('unhandledRejection').
– Параллельные вызовы лучше обрабатывать через Promise.allSettled(), чтобы ошибка одного промиса не обрушала весь батч.
  • ❤ 6
  • 👍 6
  • 🔥 2
More from @js_for_devs
  1. Sep 30, 2026Тут больше не будет новостей, статей и постов про JavaScript/TypeScript. JS/TS-разработчик…
  2. Feb 10, 2026Развлекался на выходных со Skills от Remotion. В итоге получился этот промо-ролик. В Remot…
  3. Jan 21, 2026Наконец-то могу видеть свои tailwind-классы без бесконечного скролла..
  4. Jan 20, 2026🔥 Почему свой игровой движок — это проще, чем кажется В новой, большой и практической ста…
  5. Jan 12, 2026⚙️ Инструменты для JavaScript больше не пишут на JavaScript — и вот почему это осознанный…
  6. Dec 29, 2025🎄 Итоги года 4Devs 2025 На прошлой неделе Habr опубликовал итоги года — и наш проект попа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →