Skip to main content

Що таке виняток (exception)?

Визначення

Виняток (exception) - це подія, яка виникає під час виконання програми, коли трапляється помилка, і нормальне виконання коду переривається.

Іншими словами, виняток - це "сигнал" про помилкову ситуацію, який рушій JavaScript "викидає" (throw) і який можна "спіймати" (catch).

Різниця між error та exception

  • Error (помилка) - це об'єкт, який містить інформацію про те, що пішло не так.
  • Exception (виняток) - це момент, коли цей об'єкт помилки був викинутий у процесі виконання.

Іншими словами:

  • Error - це дані,
  • Exception - це подія викидання цих даних.

Приклад: як виникає виняток

javascript
function divide(a, b) { if (b === 0) { throw new Error("Ділення на нуль неможливе!"); } return a / b; } try { divide(5, 0); // Тут виникає виняток } catch (err) { console.log("Спіймано виняток:", err.message); }

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

  1. Виконується функція divide.
  2. Умова b === 0 істинна, і рушій "викидає" (throw) об'єкт помилки.
  3. Ця подія - і є винятком.
  4. JavaScript починає шукати найближчий try...catch.
  5. Блок catch перехоплює виняток, і програма продовжує роботу.

Механізм винятків (try / throw / catch / finally)

Ключове словоЩо робить
tryБлок, де може статись помилка
throwВикидає виняток
catchПерехоплює виняток і обробляє його
finallyВиконується завжди - навіть якщо була помилка

Приклад:

javascript
try { throw new Error("Помилка мережі"); } catch (error) { console.log("Спіймано виняток:", error.message); } finally { console.log("Цей код виконається завжди"); }

Винятки бувають двох видів

  1. Автоматичні (необроблені) Виникають, коли рушій сам викидає помилку:
javascript
console.log(a); // ReferenceError → виняток викинуто автоматично
  1. Користувацькі (явні) Коли програміст сам викидає виняток:
javascript
throw new Error("Щось пішло не так!");

Що відбувається, якщо виняток не спіймано

Якщо виняток не перехоплено (catch відсутній), він "спливає" по стеку викликів. Якщо в підсумку ніхто його не спіймав - програма завершується з помилкою:

javascript
function a() { b(); } function b() { throw new Error("Помилка!"); } a(); // Помилка завершить виконання

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

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

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