StudyCode
К практике
Среднийtry/catchErrorОбработка ошибок
Среднийtry/catchErrorОбработка ошибок

Обработка ошибок

Перехватываем и нормализуем ошибки — синтаксические, валидационные, системные.

Нажми на любой элемент диаграммы для объяснения
Шаг 1 из 3
1

Типы ошибок в Node.js

В Node.js/Express возникают три вида ошибок:

СинтаксическиеJSON.parse('bad') бросает SyntaxError.

Логические — код выполнился, но результат неверный.

Сетевые/внешние — БД недоступна, API вернул ошибку.

Для перехвата используй try/catch. Express поддерживает глобальный обработчик ошибок — функцию с четырьмя аргументами: (err, req, res, next).

javascript
// Глобальный обработчик ошибок (последний app.use)
app.use((err, req, res, next) => {
  const normalized = normalizeError(err);
  res.status(normalized.code).json({
    ok: false,
    error: normalized.message,
    code: normalized.code,
  });
});

// Маршрут с безопасным парсингом
app.post('/data', (req, res, next) => {
  const raw = req.headers['content-type'] === 'text/plain'
    ? req.body.toString()
    : JSON.stringify(req.body);

  const result = safeParse(raw);
  if (!result.ok) return next(new Error(result.error));
  res.json({ received: result.data });
});