Comment gères-tu la situation lorsqu'une promesse se termine par une erreur (rejeter) ?
sobes.tech IA
Réponse de l'IA
Je gère avec les méthodes .catch() ou .finally().
.catch() est utilisé pour gérer les promesses rejetées. Si la promesse est résolue avec succès, le bloc .catch() est ignoré.
// Gestion d'erreur avec .catch()
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed'); // Simulation d'une erreur
}
return response.json();
})
.then(data => {
console.log('Données reçues:', data);
})
.catch(error => {
console.error('Erreur:', error); // Gestion de l'erreur ici
});
.finally() s'exécute indépendamment du succès ou de l'échec de la promesse. Il est utile pour nettoyer des ressources ou masquer des indicateurs de chargement.
// Utilisation de .finally() pour exécuter du code après la fin de la promesse
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed');
}
return response.json();
})
.then(data => {
console.log('Données reçues:', data);
})
.catch(error => {
console.error('Erreur:', error);
})
.finally(() => {
console.log('Requête terminée.'); // Ce code s'exécutera toujours
});
Je peux aussi utiliser la construction try...catch dans une fonction async pour gérer les erreurs des opérations asynchrones, y compris les promesses:
// Gestion d'erreur avec async/await en utilisant try...catch
async function fetchData() {
try {
const response = await fetch('/api/data');
if (!response.ok) {
throw new Error('Request failed');
}
const data = await response.json();
console.log('Données reçues:', data);
} catch (error) {
console.error('Erreur:', error); // Gestion de l'erreur ici
} finally {
console.log('Opération de fetch terminée.'); // Toujours exécuté
}
}
fetchData();
Le choix de la méthode dépend du contexte et de la logique de gestion requise. .catch() est la structure principale pour réagir aux erreurs, et .finally() pour les actions effectuées indépendamment du résultat. try...catch dans les fonctions async offre un style de gestion des erreurs plus familier et synchrone.