Skip to main content

Що робить instanceof Error?

Оператор 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 / undefinedfalseне об'єкт

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.