Выбор ответа Middle Ошибки обновлено
return в finally глотает ошибку
Вопрос
Что выведет код?
function save() {
try {
throw new Error('сбой записи');
} finally {
return 'из finally';
}
}
console.log(save());
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 'из finally', а ошибка пропадёт. return в finally заменяет результат всего блока try, в том числе брошенное исключение: ошибка исчезает бесследно, функция нормально возвращает 'из finally'.
Варианты ответа
- Неперехваченная ошибка
сбой записи undefined'из finally', а ошибка пропадётправильный ответ- Сначала
'из finally', затем неперехваченная ошибка
Разбор
return в finally заменяет результат всего блока try, в том числе брошенное исключение: ошибка исчезает бесследно, функция нормально возвращает 'из finally'. Поэтому return и throw в finally считаются плохой практикой, линтер ESLint ругается правилом no-unsafe-finally. Без return в finally ошибка ушла бы наружу после выполнения finally.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.