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
- Порада
-
Коли ви стикаєтеся з помилкою, не зупиняйтеся лише на властивості
автор: BondError.prototype.name. Завжди використовуйте такожError.messageіError.stackдля отримання повного контексту проблеми. - Порада
-
Коли ви розробляєте комплексні системи чи бібліотеки, вам може бути корисно розширити клас
автор: BondError, щоб створити власні типи помилок з додатковими властивостями або методами, які можуть допомогти вам краще оброблювати помилки в вашому коді. - Порада
-
Не забувайте завжди перевіряти властивість
Error.prototype.name, коли ви обробляєте помилки. Знання конкретного типу помилки може значно полегшити процес відлагодження та допоможе вам швидше знайти причину проблеми.
автор: Bondtry { // Код, що може викликати помилку } catch (error) { console.log('Тип помилки: ' + error.name); } - Порада
-
Під час створення власних класів помилок завжди перевизначайте властивість
Error.prototype.name. Це не тільки допоможе іншим розробникам краще розуміти природу помилки, але і полегшить процес логування та моніторингу помилок в ваших застосунках.
автор: Bondclass MyError extends Error { constructor(message) { super(message); this.name = 'MyError'; } }
Синтаксис
const e = new Error("string"); // e.name is 'Error'
Властивість name може отримувати єдине значення:
-
string -
За замовчуванням для
автор: BondError.prototype.nameпочаткове значення — "Error". Таким чином, для стандартного об'єкта помилкиError, властивістьnameповертатиме рядок "Error". Проте, цю властивість можна змінити, встановивши нове значення.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 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); // логуємо тип та повідомлення помилки
}
Коментарі
Коментарів ще немає — будьте першим!