Как создать собственный тип ошибки в 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+ и другими современными стэками, чтобы сделать управление ошибками более понятным и удобным.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку