Skip to main content

Які типи помилок ловить Error Boundary?

Помилки, які ловить Error Boundary

Тип помилкиДе відбуваєтьсяПрикладЛовить?
Помилка в рендеріпід час render() дочірнього компонентаreturn user.name; // user = undefinedТак
Помилка в конструкторі класувсередині constructor() компонентаconstructor() { throw new Error("fail"); }Так
Помилка в lifecycle-методахcomponentDidMount, componentDidUpdate тощоcomponentDidMount() { throw new Error(); }Так
Помилка в хуках (під час рендера)useMemo, useState, useEffect тощо (якщо кидає під час рендера)throw new Error("помилка в useMemo")Так
Помилка в нащадках (дочірніх компонентах)в будь-якому компоненті всередині дерева <ErrorBoundary>Child -> GrandchildТак
Помилка в Suspense fallback / lazy-компонентахпри завантаженні лінивого компонентаReact.lazy(() => import('./Broken'))Так (через найближчий Error Boundary)

Помилки, які не ловить Error Boundary

Тип помилкиДе відбуваєтьсяПрикладЛовить?Що робити
Помилки в обробниках подійвсередині onClick, onChange тощо<button onClick={() => { throw new Error(); }}>НіВикористовувати try...catch всередині обробника
Помилки в асинхронному кодіsetTimeout, Promise, async/await, fetchsetTimeout(() => { throw new Error(); })НіЛовити через try...catch або .catch()
Помилки в самому Error Boundaryвсередині методів render, componentDidCatch, fallbackНіОбгортати Error Boundary в інший Error Boundary
Помилки при серверному рендерингу (SSR)при виконанні на серверіНіЛогувати через серверний обробник
Помилки в layout-ефектах / cleanup'ахвсередині cleanup useEffectНі (React 18 це частково змінив, але краще не розраховувати)try/catch всередині ефекту
Помилки поза React (зовнішні бібліотеки, window)наприклад, в addEventListener або window.onerrorНіВикористовувати глобальні обробники помилок (window.onerror, window.onunhandledrejection)

Чому не ловить події та async-код

Тому що Error Boundary обробляє тільки синхронні помилки в React-циклі рендера. Помилки в подіях і асинхронних колбеках відбуваються вже після рендера, поза стеком React → тому React навіть "не бачить", що вони сталися.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.