Как создать собственный тип ошибки в JavaScript или TypeScript?

кастомные ошибки — обычный способ сделать обработку ошибок точнее новый класс наследуют от встроенного класса Error тип задают через свойство name, например CustomError для контекста добавляют специализированные поля…

Короткий ответ

Что ответить на собеседовании

кастомные ошибки — обычный способ сделать обработку ошибок точнее новый класс наследуют от встроенного класса Error тип задают через свойство name, например CustomError для контекста добавляют специализированные поля в JS используют extends Error и вызов super(message) это упрощает фильтрацию и логирование ошибок в продакшене семантичные ошибки делают отладку и сопровождение понятнее

Подробный разбор

Ответ с пояснениями

Как создать собственный тип ошибки в JavaScript или TypeScript?

  • кастомные ошибки — обычный способ сделать обработку ошибок точнее
  • новый класс наследуют от встроенного класса Error
  • тип задают через свойство name, например CustomError
  • для контекста добавляют специализированные поля
  • в JS используют extends Error и вызов super(message)
  • это упрощает фильтрацию и логирование ошибок
  • в продакшене семантичные ошибки делают отладку и сопровождение понятнее

Подробный ответ

Основной ответ

Да, в JavaScript и TypeScript можно определить собственный custom error type. Для этого создают класс, унаследованный от встроенного Error. Такой подход позволяет точнее обрабатывать исключения, улучшает отладку и даёт возможность добавить свойства и методы, описывающие контекст ошибки.

Ключевые моменты

  • Наследование от Error: создаётся расширяющий Error класс, а конструктор базового класса вызывается через super(message).
  • Поддержка стека вызовов: следует корректно задать this.name; в Node.js также можно вызвать Error.captureStackTrace, чтобы стек отражал новый тип ошибки.
  • Дополнительные свойства: в класс часто добавляют code, details и другую бизнес-логику, необходимую для обработки исключения.

Практический контекст

В системах со сложной бизнес-логикой отдельные типы помогают различать ошибки валидации, сети и доступа. Например, REST API может использовать ValidationError с HTTP-кодом 400 и AuthenticationError с кодом 401, чтобы middleware сформировал корректный ответ клиенту.

Пример простого custom error в JS:

class ValidationError extends Error {
constructor(message) {
super(message);
this.name = 'ValidationError';
if (Error.captureStackTrace) {
Error.captureStackTrace(this, ValidationError);
}
}
}

Такой способ широко применяют с React 18+, Node.js 14+ и другими современными стэками, чтобы сделать управление ошибками более понятным и удобным.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее