Skip to main content

Помилки та їх обробка

Базова обробка: try...catch...finally і throw

javascript
try { risky(); // код, який може впасти } catch (err) { console.error(err.message); // обробка/логування } finally { cleanup(); // виконується завжди (навіть за помилки) }

Генерація помилки:

javascript
if (!user) { throw new Error('User not found'); }

Кастомні помилки

javascript
class ValidationError extends Error { constructor(message, cause) { super(message, { cause }); // Node 16+/сучасні браузери: err.cause this.name = 'ValidationError'; } } throw new ValidationError('Invalid email');

2) Асинхронний код

a) async/await + try...catch

javascript
async function load() { try { const res = await fetch('/api/data'); if (!res.ok) throw new Error(`HTTP ${res.status}`); return await res.json(); } catch (err) { // обробка/повторна спроба/сповіщення console.error('Load failed:', err); return null; // або прокинути далі: throw err } }

b) Проміси: .catch()

javascript
fetch('/api/data') .then(r => r.json()) .catch(err => console.error('Request failed', err));

c) Паралельні операції без падіння всього батчу

javascript
const results = await Promise.allSettled(urls.map(u => fetch(u))); for (const r of results) { if (r.status === 'fulfilled') console.log('OK', r.value); else console.warn('Failed', r.reason); }

3) Глобальні перехоплювачі (остання лінія оборони)

Браузер

javascript
// синхронні/непіймані винятки window.addEventListener('error', (event) => { console.error('Uncaught error:', event.error, event.message, event.filename, event.lineno); }); // непіймані відхилення промісів window.addEventListener('unhandledrejection', (event) => { console.error('Unhandled rejection:', event.reason); });

Node.js

javascript
process.on('uncaughtException', (err) => { console.error('Uncaught Exception', err); // логування + коректне завершення процесу process.exit(1); }); process.on('unhandledRejection', (reason) => { console.error('Unhandled Rejection', reason); // вирішіть: логувати і завершувати/продовжувати за політикою застосунку });

Глобальні хендлери - це страхування, а не заміна локальної обробки.

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

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

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