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".

автор: Bond

Порада

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

автор: Bond
Порада

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

автор: Bond
Порада

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

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

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

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

Синтаксис

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

Властивість name може отримувати єдине значення:

string

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

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 4 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
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); // обробляємо та логуємо помилку
}
автор: Bond

У цьому прикладі ми створюємо новий клас помилок - 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); // логуємо тип та повідомлення помилки
}
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід