Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як створити помилку вручну?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Щоб створити помилку вручну**, потрібно написати `throw new Error("Повідомлення про помилку")` - `new Error()` створює об'єкт помилки, а `throw` викидає (генерує) це виключення. **Ключове:** JS перериває виконання поточного блока і шукає найближчий `try...catch`; якщо обробник не знайдено, програма падає з повідомленням про помилку.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротка відповідь > Щоб створити помилку вручну, напиши: > > ```javascript > throw new Error("Повідомлення про помилку"); > ``` --- ## Як це працює 1. `new Error("текст")` - створює **об'єкт помилки**. 2. `throw` - **викидає** (генерує) це виключення. 3. JS перериває виконання поточного блока і шукає найближчий `try...catch`. 4. Якщо обробник знайдено - помилка туди "потрапляє". Якщо ні - програма падає з повідомленням про помилку. --- ## Приклад 1. Просте створення помилки ```javascript try { throw new Error("Щось пішло не так!"); } catch (err) { console.log("Спіймано:", err.message); } ``` Вивід: ```javascript Спіймано: Щось пішло не так! ``` --- ## Приклад 2. Перевірка даних Частий сценарій - **валідація вхідних параметрів**: ```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(10, 0)); } catch (e) { console.log("Помилка:", e.message); } ``` Вивід: ```javascript Помилка: Ділення на нуль неможливе! ``` --- ## Приклад 3. Використання різних типів помилок Можна викидати не тільки `Error`, а й його нащадків: ```javascript throw new TypeError("Невірний тип"); throw new RangeError("Вихід за межі діапазону"); throw new ReferenceError("Невизначена змінна"); ``` Усі вони створюються так само, через `new ...Error("повідомлення")`. --- ## Приклад 4. Своя (кастомна) помилка Можна створити **власний тип помилки**, успадкувавши його від `Error`: ```javascript class ValidationError extends Error { constructor(message) { super(message); this.name = "ValidationError"; } } function validateUser(user) { if (!user.name) { throw new ValidationError("Ім'я обов'язкове!"); } } try { validateUser({}); } catch (e) { console.log(`${e.name}: ${e.message}`); } ``` Вивід: ```javascript ValidationError: Ім'я обов'язкове! ``` --- ## Приклад 5. Викидати можна не тільки `Error` (але краще не варто) ```javascript throw "Довільний рядок"; throw 404; throw { message: "Помилка", code: 123 }; ``` Однак **так робити не рекомендується** - це ламає стандартний формат помилок і робить код менш передбачуваним. Краще завжди використовувати: ```javascript throw new Error("Повідомлення"); ``` --- ## Приклад 6. Помилка без try...catch Якщо `throw` використовується без обробки - програма зупиняється: ```javascript throw new Error("Критична помилка!"); console.log("Цей код не виконається"); ``` Вивід: ```javascript Uncaught Error: Критична помилка! ``` --- ## Підсумок | Що використовуємо | Призначення | |---|---| | `throw` | Викидає виключення | | `Error` | Базовий клас помилок | | `TypeError`, `RangeError`, `ReferenceError` | Спеціалізовані типи помилок | | `try...catch` | Обробляє помилку | | `class CustomError extends Error` | Створення власних помилок |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.