Рассмотрите приведённый код на JavaScript. Что будет выведено в консоль после его выполнения?

28.02.2026 20:20
Обновлено: 01.03.2026 09:14

Подробное объяснение

Код демонстрирует создание пользовательского класса ошибки CustomError, который наследуется от встроенного класса Error. В функции throwError создаётся экземпляр CustomError с сообщением 'Что-то пошло не так' и кодом 404, который затем выбрасывается. В блоке catch переменная e содержит этот экземпляр, поэтому e instanceof Error возвращает true, так как CustomError является наследником Error. Затем вызывается метод showError(), определённый в классе CustomError, который формирует строку 'Ошибка [404]: Что-то пошло не так', используя свойства code и message объекта ошибки.

Часто задаваемые вопросы (FAQ)

1 Что такое наследование в JavaScript и как оно работает с классами?
Наследование в JavaScript позволяет одному классу (дочернему) унаследовать свойства и методы другого класса (родительского). В данном примере CustomError наследует от Error с помощью ключевого слова extends, что позволяет использовать все возможности Error, включая стек вызовов, и добавлять собственные поля и методы.
2 Как правильно создавать пользовательские ошибки в JavaScript?
Для создания пользовательских ошибок рекомендуется наследовать от встроенного класса Error, как показано в примере. Это обеспечивает корректную работу с оператором instanceof и доступ к стандартным свойствам ошибок, таким как message и stack. Дополнительные поля, например code, можно добавить в конструкторе.
3 Что делает оператор instanceof в JavaScript?
Оператор instanceof проверяет, является ли объект экземпляром определённого класса или его наследника. В коде e instanceof Error возвращает true, потому что e — экземпляр CustomError, который наследует от Error, что подтверждает цепочку прототипов.

Типичные ошибки

1 Попытка вызвать showError() без проверки типа ошибки
Если в блоке catch может быть перехвачена ошибка другого типа, не имеющая метода showError(), это приведёт к ошибке выполнения. Рекомендуется проверять тип ошибки с помощью instanceof перед вызовом специфичных методов.
2 Неверное использование super() в конструкторе пользовательской ошибки
В конструкторе CustomError необходимо вызвать super(message) для корректной инициализации родительского класса Error. Пропуск этого вызова или передача неверных аргументов может привести к некорректному установлению свойства message и другим проблемам.
3 Путаница между свойствами code и message в пользовательской ошибке
Свойство message наследуется от Error и устанавливается через super(message), а code — это пользовательское поле, добавленное в конструкторе CustomError. Использование this.message вместо super(message) или неправильный доступ к этим свойствам может вызвать ошибки в выводе данных.

Установите расширение Poresh.Ai

Решайте тесты мгновенно с помощью искусственного интеллекта прямо в браузере

Автоматическое распознавание вопросов
ИИ-анализ и подробные объяснения
Работает на любых образовательных платформах
Безопасно и конфиденциально