Выбор ответа Middle Ошибки обновлено

Зачем this.name в своём классе ошибки

Вопрос

Зачем в конструкторе своего класса ошибки пишут this.name = 'HttpError'?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Иначе name берётся из Error.prototype и равен 'Error', тип не виден в логах. name это обычное свойство, по умолчанию оно приходит из Error.prototype и равно 'Error'.

Варианты ответа

  1. Иначе name берётся из Error.prototype и равен 'Error', тип не виден в логахправильный ответ
  2. Иначе instanceof HttpError всегда будет false, ведь проверка идёт по name
  3. Иначе не заполнится message: конструктор Error читает его из name
  4. Иначе ошибку нельзя бросить через throw, движок требует непустой name

Разбор

name это обычное свойство, по умолчанию оно приходит из Error.prototype и равно 'Error'. Поэтому String(new HttpError('x')) без явного name даёт 'Error: x', и в логах непонятно, что это за ошибка. instanceof работает по цепочке прототипов и от name не зависит. message заполняет super(message). Бросить можно что угодно, даже без наследования.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме