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".
Порада: | Не забувайте завжди перевіряти властивість
|
Порада: | Коли ви стикаєтеся з помилкою, не зупиняйтеся лише на властивості |
Порада: | Під час створення власних класів помилок завжди перевизначайте властивість
|
Порада: | Коли ви розробляєте комплексні системи чи бібліотеки, вам може бути корисно розширити клас |
Синтаксис
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); // логуємо тип та повідомлення помилки
}