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);
}
}