fetch отклоняет Promise при сетевой ошибке, блокировке CORS, отмене и некоторых ошибках запроса; HTTP 404 или 500 сами по себе не вызывают catch.
В каких случаях выполнение fetch попадёт в catch? Как определить, что запрос выполнен успешно или неуспешно, и откуда берётся HTTP-статус?
fetch отклоняет Promise при сетевой ошибке, блокировке CORS, отмене и некоторых ошибках запроса; HTTP 404 или 500 сами по себе не вызывают catch.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
fetch отклоняет Promise при сетевой ошибке, блокировке CORS, отмене и некоторых ошибках запроса; HTTP 404 или 500 сами по себе не вызывают catch.
HTTP-статус предоставляет сервер в ответе: проверьте response.status и response.ok, которое истинно для 200–299. Для обработки HTTP-ошибки в catch нужно явно бросить исключение. Чтение JSON тоже может завершиться ошибкой отдельно от получения ответа; opaque-ответ имеет особые ограничения видимости.