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

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

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

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

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

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

JS властивість Error.name

Загальний опис

Error.prototype.name є властивістю, яка вказує на ім'я помилки або конкретний тип помилки. Ця властивість допомагає розуміти причину помилки та ефективно вирішувати її.

Коли виникає помилка в JavaScript, може бути кілька різних причин. Щоб швидко визначити причину, потрібно знати конкретний тип помилки, і саме тут Error.prototype.name приходить на допомогу. Замість того, щоб просто показувати загальне повідомлення про помилку, ця властивість надає додатковий контекст, який може бути корисним під час відлагодження.

Error.prototype.name часто використовується у сполученні з конструкцією try/catch. Під час виконання коду в блоку try, якщо виникає помилка, вона перехоплюється в блоку catch. Використовуючи Error.prototype.name, можна з'ясувати, який тип помилки виник, і відповідно обробити її.

try {
    // якийсь код, який може викликати помилку
    let result = someFunction();
} catch (error) {
    if (error.name === "ReferenceError") {
        console.log("Сталася помилка посилання!");
    } else {
        console.log("Сталася невідома помилка: " + error.`message`);
    }
}

Error.prototype.name полягає в тому, що її можна перевизначити для кастомних помилок. Це означає, що коли створюється користувацький клас помилок, можна вказати власне ім'я для типу помилки.

class CustomError extends Error {
    constructor(message) {
        super(message);
        this.name = "CustomError";
    }
}

Тепер при виникненні цієї помилки, її ім'я буде "CustomError".

Порада:

Не забувайте завжди перевіряти властивість Error.prototype.name, коли ви обробляєте помилки. Знання конкретного типу помилки може значно полегшити процес відлагодження та допоможе вам швидше знайти причину проблеми.

try {
    // Код, що може викликати помилку
} catch (error) {
    console.log('Тип помилки: ' + error.name);
}
Порада:

Коли ви стикаєтеся з помилкою, не зупиняйтеся лише на властивості Error.prototype.name. Завжди використовуйте також Error.message і Error.stack для отримання повного контексту проблеми.

Порада:

Під час створення власних класів помилок завжди перевизначайте властивість Error.prototype.name. Це не тільки допоможе іншим розробникам краще розуміти природу помилки, але і полегшить процес логування та моніторингу помилок в ваших застосунках.

class MyError extends Error {
    constructor(message) {
        super(message);
        this.name = 'MyError';
    }
}
Порада:

Коли ви розробляєте комплексні системи чи бібліотеки, вам може бути корисно розширити клас Error, щоб створити власні типи помилок з додатковими властивостями або методами, які можуть допомогти вам краще оброблювати помилки в вашому коді.

Синтаксис

const e = new Error("string"); // e.name is 'Error'

Значення

string

За замовчуванням для Error.prototype.name початкове значення — "Error". Таким чином, для стандартного об'єкта помилки Error, властивість name повертатиме рядок "Error". Проте, цю властивість можна змінити, встановивши нове значення.

Return

Переглядачі

Переглядач

1

1

1

4

12

Переглядач

4.4

18

4

1

Переглядач

0.10.0

1.0

Приклади


У цьому прикладі функція divide викидує стандартну помилку, якщо її викликати з другим аргументом, рівним 0. Блок catch ловить цю помилку та виводить її тип та повідомлення, використовуючи властивості Error.prototype.name і Error.prototype.message.

// Функція, яка може викликати помилку
function divide(a, b) {
  if(b === 0) throw new Error('Ділення на нуль!'); // викидуємо помилку, якщо b === 0
}

try {
  divide(1, 0); // викликаємо функцію з невірними аргументами
} catch (error) {
  console.error('Помилка типу ' + error.name + ': ' + error.message); // обробляємо та логуємо помилку
}

У цьому прикладі ми створюємо новий клас помилок - ValidationError. Коли ця помилка викидується в блоку try, ми можемо вивести її тип і повідомлення в блоку catch за допомогою властивостей Error.prototype.name і Error.prototype.message.

// Оголошуємо новий клас помилки
class ValidationError extends Error {
  constructor(message) {
    super(message); // викликаємо конструктор батьківського класу
    this.name = 'ValidationError'; // змінюємо властивість name на 'ValidationError'
  }
}

try {
  // викидуємо помилку з нашим класом
  throw new ValidationError('Невірні дані!');
} catch (error) {
  console.log(error.name + ': ' + error.message); // логуємо тип та повідомлення помилки
}