Ошибка из асинхронной функции не попадает в try/catch
async function loadUser(id) {
const res = await fetch(`/api/users/${id}`);
if (!res.ok) throw new Error('Не удалось загрузить пользователя');
return res.json();
}
function handleClick() {
try {
loadUser(1);
} catch (e) {
showError(e.message);
}
}
Сервер отвечает кодом 500. Что увидит пользователь после клика?
- Сообщение об ошибке: блок try перехватывает любые ошибки, возникшие внутри вызванных из него функций.
- Ничего: вызов без await вернул промис, отклонение улетело мимо catch и стало необработанным, showError не вызовется.
- Сообщение об ошибке, но с задержкой: блок catch остаётся активным до завершения промиса и сработает, когда придёт отклонение.
- Ничего: код не запустится вовсе, потому что асинхронную функцию нельзя вызывать из обычной.
