Помилки в JS — об'єкти класу Error або його нащадків.
Вбудовані типи помилок:
• Error — базовий клас
• SyntaxError — помилка синтаксису (парсинг JS)
• ReferenceError — звернення до неіснуючої змінної
• TypeError — неправильний тип (null.property)
• RangeError — значення поза межами (new Array(-1))
• URIError — помилка URI
• EvalError — помилка eval()
try {
function safeParseJSON(str) {
try {
return JSON.parse(str);
} catch (e) {
console.log(`Невалідний JSON: ${e.message}`);
return null;
}
}
console.log(safeParseJSON('{"name":"Іван","age":30}'));
console.log(safeParseJSON('не JSON'));
function validateAge(age) {
if (typeof age !== 'number') throw new TypeError('Вік має бути числом');
if (age < 0 || age > 150) throw new RangeError('Вік поза межами 0-150');
return `Валідний вік: ${age}`;
}
for (const v of [25, -5, 200, 'abc']) {
try { console.log(validateAge(v)); }
catch (e) { console.log(`${e.constructor.name}: ${e.message}`); }
}
function processData(data) {
console.log('Починаємо обробку');
try {
if (data === null) throw new Error('Дані відсутні');
if (data.length < 3) throw new RangeError('Замало даних');
return `Оброблено ${data.length} елементів`;
} catch (e) {
console.log(e.message);
} finally {
console.log('Обробку завершено');
}
}
console.log(processData([1,2,3,4]));
processData([]);
processData(null);