Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке виняток (exception)?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Виняток (exception)** - це подія, яка виникає під час виконання програми, коли трапляється помилка, і нормальне виконання коду переривається. **Ключове:** виняток - це "сигнал" про помилкову ситуацію, який рушій JavaScript "викидає" (`throw`) і який можна "спіймати" (`catch`).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Визначення **Виняток (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 → виняток викинуто автоматично ``` 2. **Користувацькі (явні)** Коли програміст сам викидає виняток: ```javascript throw new Error("Щось пішло не так!"); ``` ## Що відбувається, якщо виняток не спіймано Якщо виняток **не перехоплено** (`catch` відсутній), він "спливає" по стеку викликів. Якщо в підсумку ніхто його не спіймав - програма **завершується з помилкою**: ```javascript function a() { b(); } function b() { throw new Error("Помилка!"); } a(); // Помилка завершить виконання ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.