Skip to main content

Що робить оператор 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); }

Що відбувається:

  1. throw створює виняток - об'єкт Error.
  2. Виконання try переривається.
  3. Керування передається в catch.
  4. Помилку опрацьовано, програма продовжується.

Вивід:

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

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