Выбор ответа Junior Ошибки и логирование спрашивают часто обновлено
try/catch и ошибка в setTimeout
Вопрос
Что произойдёт при запуске?
try {
setTimeout(() => { throw new Error('late'); }, 0);
} catch (e) {
console.log('caught');
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Не поймается, процесс упадёт с uncaught exception. Блок try завершился сразу после регистрации таймера.
Варианты ответа
- Не поймается, процесс упадёт с uncaught exceptionправильный ответ
- Выведется
caught, try ловит ошибку колбэка - Ошибка будет молча проигнорирована
- Выведется
caught, но только в строгом режиме
Разбор
Блок try завершился сразу после регистрации таймера. Колбэк запускается позже из event loop, с другим стеком, где этого try уже нет. Исключение никто не ловит, Node завершает процесс с кодом 1.
caughtбыл бы для синхронного броска или дляawaitвнутриtry.- Игнорирования нет: непойманное исключение роняет процесс.
- Строгий режим на это не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.