Помилки всередині функцій
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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.