JS об'єкт throw
Загальний опис
throw — це ключове слово JavaScript, яке використовується для генерації винятків, що сигналізують про помилки або інші аномалії в роботі програми. Коли throw викликається, виконання коду негайно припиняється, і управління передається найближчому блоку catch або механізму обробки помилок.
У throw можна передати будь-яке значення: об'єкт, рядок, число або навіть функцію. Найчастіше передають об'єкт помилки (Error), який містить інформацію про проблему.
Основна структура:
function divide(a, b) {
if (b === 0) {
throw new Error("Ділення на нуль заборонено.");
}
return a / b;
}
У цьому прикладі, якщо b дорівнює нулю, програма зупинить виконання і створить виняток із повідомленням.
Як працює разом з try...catch:
try {
console.log(divide(10, 0));
} catch (error) {
console.error("Помилка:", error.message);
}
Блок catch обробляє виняток і дозволяє уникнути аварійного завершення програми.
throw також може використовуватися з іншими типами даних, наприклад:
throw "Простий текстовий виняток";
throw 404; // Числовий код помилки
throw {message: "Щось пішло не так", code: 500};
Загалом, throw — потужний інструмент для керування помилками в програмному коді, який дозволяє дотримуватися принципу "fail fast" (швидке виявлення проблем).
| Порада: | Обробляйте винятки обережно. Пам’ятайте, що необроблені винятки можуть завершити виконання всієї програми. Завжди використовуйте |
| Порада: | Уникайте використання простих типів (наприклад, рядків або чисел) у |
| Порада: | Створюйте власні класи помилок, успадковані від
|
Синтаксис
throw expression;
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
1 |
1 |
1 |
4 |
12 |
| Переглядач | ||||
|---|---|---|---|---|
4.4 |
18 |
4 |
1 |
| Переглядач | ||
|---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад інтерактивний: користувач може вводити значення та перевіряти їхню коректність. Якщо дані некоректні, вони побачать відповідне повідомлення про помилку. Це зручно для навчання роботі з винятками та забезпечення правильної взаємодії з користувачем.
У цьому прикладі throw використовується для зупинки виконання, якщо дані не відповідають критеріям. Це корисно для підтримання чистоти даних.
function validateUser(user) {
if (!user.name) throw new Error("Ім'я обов'язкове.");
if (user.age < 18) throw new Error("Користувач повинен бути старше 18 років.");
return "Користувач успішно верифікований.";
}
try {
console.log(validateUser({ name: "Іван", age: 15 }));
} catch (error) {
console.error("Помилка валідації:", error.message);
}
Тут створено власний клас помилок NetworkError, який дозволяє розмежувати різні типи винятків і обробляти їх по-різному.
class NetworkError extends Error {
constructor(message) {
super(message);
this.name = "NetworkError";
}
}
function fetchData(url) {
if (!url.startsWith("https://")) {
throw new NetworkError("URL повинен починатися з 'https://'.");
}
// Логіка запиту
return "Дані завантажено.";
}
try {
console.log(fetchData("http://example.com"));
} catch (error) {
if (error instanceof NetworkError) {
console.error("Мережева помилка:", error.message);
} else {
console.error("Невідома помилка:", error);
}
}
