Skip to main content

Помилки всередині функцій

1. Синхронна обробка помилок (try...catch)

Використовується, коли помилка може статися в момент виконання функції.

javascript
function divide(a, b) { try { if (b === 0) { throw new Error("Ділення на нуль неможливе"); } return a / b; } catch (error) { console.error("Помилка:", error.message); return null; // Повертаємо безпечне значення } } console.log(divide(10, 0)); // Помилка: Ділення на нуль неможливе
  • Усе, що всередині try, виконується "під захистом".
  • Якщо виникає помилка, виконання переходить у catch.
  • Після цього програма не падає.

2. Асинхронні помилки (async/await)

Для async-функцій потрібно використовувати try...catch всередині асинхронного блоку.

javascript
async function fetchUser(id) { try { const res = await fetch(`/api/users/${id}`); if (!res.ok) throw new Error("Користувача не знайдено"); return await res.json(); } catch (error) { console.error("Помилка при запиті:", error.message); return null; } }

3. Помилки в промісах

Якщо не використовуєш await, помилки можна ловити через .catch().

javascript
fetch("/api/data") .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error("Помилка:", err));

4. Створення і прокидання помилок вручну

Іноді потрібно не тільки зловити помилку, а й передати її вище.

javascript
function parseJSON(str) { try { return JSON.parse(str); } catch (error) { throw new Error("Некоректний JSON: " + error.message); } } try { parseJSON("{invalid}"); } catch (e) { console.error("Верхній рівень зловив:", e.message); }

5. Добрі практики

Використовуй try...catch точково, там, де реально очікуєш помилку. Не глуши помилки без логування. Повертай передбачуване значення (null, {}, false) при збої. Для серверних функцій - логуй через logger, Sentry, console.error. Для чистих функцій - викидай помилку, а не логуй (нехай вирішує код, що викликає).

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

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

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