Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить instanceof Error?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Оператор `instanceof Error` у JavaScript використовується, щоб **перевірити, чи є об'єкт екземпляром класу** `Error` (або його нащадків - `TypeError`, `RangeError`, `ReferenceError` тощо). **Ключове:** `obj instanceof Error` повертає `true`, якщо об'єкт `obj` - це помилка, створена через `Error` (або успадкована від нього).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняОператор `instanceof Error` у JavaScript використовується, щоб **перевірити, чи є об'єкт екземпляром класу** `Error` (або його нащадків - `TypeError`, `RangeError`, `ReferenceError` тощо). ## Коротко > `obj instanceof Error` повертає `true`, > якщо об'єкт `obj` - це **помилка**, створена через `Error` > (або успадкована від нього). ## Синтаксис ```javascript object instanceof Error ``` Повертає: - `true` - якщо об'єкт є помилкою; - `false` - якщо ні. ## Приклад 1. Перевірка звичайної помилки ```javascript const err = new Error("Щось пішло не так"); console.log(err instanceof Error); // true ``` Об'єкт `err` створений через `new Error()`, тому перевірка повертає `true`. ## Приклад 2. Перевірка вбудованих типів помилок ```javascript console.log(new TypeError() instanceof Error); // true console.log(new RangeError() instanceof Error); // true console.log(new ReferenceError() instanceof Error); // true console.log(new SyntaxError() instanceof Error); // true ``` Усі вони **успадковані від** `Error`, тому `instanceof Error` повертає `true` для всіх стандартних помилок. ## Приклад 3. Перевірка неправильного значення ```javascript console.log("Помилка" instanceof Error); // false console.log({ message: "Помилка" } instanceof Error); // false console.log(404 instanceof Error); // false ``` Ці значення не створені через `Error`, тому вони **не вважаються помилками**, навіть якщо "схожі". ## Приклад 4. Перевірка кастомних (користувацьких) помилок ```javascript class ValidationError extends Error {} const err = new ValidationError("Невірний email"); console.log(err instanceof ValidationError); // true console.log(err instanceof Error); // true ``` Будь-який клас, успадкований від `Error`, також повертатиме `true` при перевірці `instanceof Error`. ## Приклад 5. Перевірка перед логуванням Це частий прийом у production-коді: ```javascript try { throw new Error("Помилка запиту"); } catch (e) { if (e instanceof Error) { console.error("Помилка:", e.message); } else { console.error("Непередбачений виняток:", e); } } ``` Так можна безпечно обробляти лише справжні помилки, а не випадково викинуті рядки чи числа. ## Приклад 6. Перевірка при роботі з промісами ```javascript Promise.reject(new TypeError("Помилка")).catch(e => { if (e instanceof Error) { console.log("Справжня помилка:", e.name); } else { console.log("Щось дивне:", e); } }); ``` ## Чому це важливо JavaScript дозволяє "викидати" **будь-які значення** через `throw`: ```javascript throw "рядок"; throw 404; throw { message: "помилка" }; ``` Але такі значення **не є екземплярами** `Error`, тому `instanceof Error` дозволяє **відрізнити "нормальні" помилки від довільних даних**. ## Підсумок | Значення, що перевіряється | Результат `instanceof Error` | Причина | |---|---|---| | `new Error()` | true | екземпляр Error | | `new TypeError()` | true | нащадок Error | | `new ValidationError()` | true | користувацький Error | | `"Помилка"` | false | звичайний рядок | | `{ message: "Помилка" }` | false | просто об'єкт | | `null` / `undefined` | false | не об'єкт |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.