Проверяет понимание механизма обработки ошибок в цепочках промисов и условий, при которых выполнение попадает в блок catch.
В JavaScript промисы предоставляют механизм для работы с асинхронными операциями. Когда промис отклоняется (rejected), управление передаётся в ближайший обработчик catch в цепочке. Чтобы выполнение попало в блок catch, необходимо, чтобы промис был отклонён или в цепочке возникло исключение.
reject() внутри исполнителя промиса.throw) внутри исполнителя или любого обработчика then.const promise = new Promise((resolve, reject) => {
// Асинхронная операция
setTimeout(() => {
reject(new Error('Ошибка'));
}, 1000);
});
promise
.then(result => {
console.log(result);
})
.catch(error => {
console.error('Поймано:', error.message);
});
В этом примере промис отклоняется через reject(), и управление попадает в catch. Если бы мы бросили исключение внутри then, оно также было бы перехвачено.
В цепочке промисов ошибка может возникнуть на любом этапе. Если она не обработана в текущем then, она передаётся дальше, пока не встретит catch. Это позволяет централизованно обрабатывать ошибки.
fetch('/api/data')
.then(response => response.json())
.then(data => {
// Обработка данных
throw new Error('Неверные данные');
})
.catch(error => {
console.error('Ошибка:', error);
});
Для попадания в блок catch необходимо явно отклонить промис или вызвать исключение в цепочке. Это стандартный способ обработки ошибок в асинхронном коде, который делает приложение надёжнее и предсказуемее.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию