Помилки варто повідомляти, коли в програмі чи у фрагменті коду щось пішло не так або трапилося щось несподіване.
Це обʼєкти JavaScript.
Головна властивість цього обʼєкта - message:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
За допомогою синтаксису throw можна кинути помилку.
throw new Error('Oops');
Коли помилку кинуто, поточне виконання зупиняється й відновлюється в першому блоці catch у стеку викликів.
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
Як і з будь-яким класом у JavaScript, підкласи можуть успадковуватися від Error, щоб створювати власні помилки за допомогою ключового слова extends.
Синтаксис instanceof перевіряє, чи є спіймана помилка екземпляром конкретного підкласу Error.
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
Крім обʼєкта Error, існують й інші вбудовані обʼєкти помилок. Дізнатися більше про них можна тут
Також можна визначити власний тип помилки, створивши клас, що успадковується від одного з вбудованих типів помилок
class MyCustomError extends Error {}
Хоча синтаксис throw зазвичай використовують, щоб кинути обʼєкт помилки, JavaScript гнучкий і дозволяє кинути string, null або будь-який примітивний тип.
Хоча це не є стандартом у JavaScript, більшість середовищ JavaScript реалізують властивість stack в обʼєктах помилок, що дає змогу отримати стек викликів помилки, яку було кинуто.