Вопрос проверяет понимание стратегий обработки ошибок при взаимодействии с внешними API, включая HTTP-статусы, исключения и повторные попытки.
При работе с API ошибки неизбежны: сервер может быть недоступен, запрос может быть некорректным или данные могут отсутствовать. Правильная обработка ошибок делает приложение устойчивым и улучшает пользовательский опыт.
Каждый ответ API содержит HTTP-статус, который указывает на успех или неудачу. Например, 200 OK — успех, 404 Not Found — ресурс не найден, 500 Internal Server Error — ошибка сервера. В коде нужно проверять статус и реагировать соответственно.
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.catch(error => console.error('Fetch error:', error));Современный подход — использовать async/await с блоком try-catch для обработки ошибок асинхронных запросов. Это делает код более читаемым.
async function getData() {
try {
const response = await fetch('/api/data');
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Failed to fetch data:', error);
throw error; // пробрасываем дальше
}
}Временные ошибки (например, 503 Service Unavailable) можно обработать с помощью повторных попыток с задержкой. Это повышает надежность.
async function fetchWithRetry(url, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
const response = await fetch(url);
if (response.ok) return response.json();
if (response.status >= 500 && i < retries - 1) {
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
continue;
}
throw new Error(`HTTP error! status: ${response.status}`);
} catch (error) {
if (i === retries - 1) throw error;
}
}
}Обработка ошибок API обязательна для создания надежных приложений. Используйте проверку статусов, try-catch и механизмы повторных попыток, чтобы минимизировать влияние сбоев и обеспечить корректную обратную связь пользователю.
Уровень
Рейтинг:
5
Сложность:
4
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию