Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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 разом із блоками try...catch для захисту критичних ділянок коду.

Порада:

Уникайте використання простих типів (наприклад, рядків або чисел) у throw. Надавайте перевагу об'єктам Error, оскільки вони надають більше інформації, наприклад, стек викликів (stack) та ім’я помилки (name).

Порада:

Створюйте власні класи помилок, успадковані від Error. Це допоможе чіткіше визначити типи помилок:

class ValidationError extends Error {
    constructor(message) {
        super(message);
        this.name = "ValidationError";
    }
}
throw new ValidationError("Некоректні дані!");

Синтаксис

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

Методи

Властивості