Що робить оператор throw?
Визначення
throw- оператор, який перериває виконання поточного коду і виштовхує виняток (помилку чи будь-який інший об'єкт).
Синтаксис
javascript
throw вираз;Де вираз може бути будь-яким JS-значенням:
об'єктом, числом, рядком, логічним значенням тощо.
Але найчастіше виштовхують екземпляр класу Error.
Приклад 1. Просте використання
javascript
throw "Щось пішло не так!";У консолі:
javascript
Uncaught Щось пішло не так!Тут програма негайно зупиняється, тому що виняток не було впіймано.
Приклад 2. З блоком try...catch
javascript
try {
throw new Error("Сталася помилка під час виконання!");
} catch (err) {
console.log("Впіймано:", err.message);
}Що відбувається:
throwстворює виняток - об'єктError.- Виконання
tryпереривається. - Керування передається в
catch. - Помилку опрацьовано, програма продовжується.
Вивід:
javascript
Впіймано: Сталася помилка під час виконання!Приклад 3. Використання throw для перевірки вхідних даних
javascript
function divide(a, b) {
if (typeof a !== "number" || typeof b !== "number") {
throw new TypeError("Обидва аргументи мають бути числами!");
}
if (b === 0) {
throw new Error("Ділення на нуль неможливе!");
}
return a / b;
}
try {
console.log(divide(5, 0));
} catch (e) {
console.error("Помилка:", e.message);
}Вивід:
javascript
Помилка: Ділення на нуль неможливе!Приклад 4. Можна виштовхувати не тільки Error
javascript
try {
throw { message: "Помилка мережі", code: 500 };
} catch (e) {
console.log(e.message, e.code);
}Вивід:
javascript
Помилка мережі 500Але зазвичай так не рекомендується - краще завжди використовувати стандартні класи помилок (Error, TypeError, RangeError тощо), щоб зберегти читабельність і сумісність.
Приклад 5. Після throw код не виконується
javascript
console.log("до throw");
throw new Error("помилка!");
console.log("після throw"); // не виконаєтьсяПісля throw виконання поточного блока припиняється, і керування передається обробнику помилок (якщо він є).
Візуально
javascript
try {
// виштовхуємо виняток
throw new Error("Помилка!");
} catch (e) {
// ловимо виняток
console.log("Впіймано:", e.message);
} finally {
console.log("Цей блок виконається завжди");
}Підсумок
| Пункт | Опис |
|---|---|
| Призначення | Примусово виштовхує виняток (помилку) |
| Тип значення | Можна виштовхнути будь-який тип даних (зазвичай Error) |
| Ефект | Перериває виконання поточного блока |
| Використовується з | try...catch для обробки помилок |
| Після throw | Код далі не виконується |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.