Выбор ответа Junior Ошибки обновлено
Почему не стоит бросать строку
Вопрос
Чем плох код throw 'Пользователь не найден'?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: У строки нет стека, instanceof Error ложен, к ней не добавить cause. Бросить можно любое значение, это не синтаксическая ошибка, и catch получит строку.
Варианты ответа
- Это SyntaxError: бросать через
throwможно только объекты и их наследников - У строки нет стека,
instanceof Errorложен, к ней не добавитьcauseправильный ответ - Строку нельзя поймать в
catch: она уйдёт сразу в глобальный обработчик - Строку поймает только
finally, аcatchждёт объект с полемmessage
Разбор
Бросить можно любое значение, это не синтаксическая ошибка, и catch получит строку. Но при отладке без стека непонятно, где ошибка возникла; проверки instanceof Error и обработчики, ожидающие err.message, сломаются, а Sentry и подобные сервисы покажут её хуже. finally вообще не получает ошибку. Поэтому бросают new Error(...) или свои наследники.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.