Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Помилки всередині функцій». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Помилки всередині функції обробляють через **`try...catch`** для синхронного коду, `try...catch` всередині `async`-функцій для асинхронного, і `.catch()` для промісів без `await`. **Ключове:** використовуй `try...catch` точково, де реально очікуєш помилку, і повертай передбачуване значення (`null`, `{}`, `false`) при збої, а не глуши помилки без логування.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 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`. Для чистих функцій - викидай помилку, а не логуй (нехай вирішує код, що викликає).Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.