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); // логуємо тип та повідомлення помилки
}
