JavaScript:
Gestion des erreurs

Comment faire :

Voici le classique bloc try-catch :

try {
  // Code qui pourrait générer une erreur
  let result = potentiallyRiskyOperation();
  console.log('Succès :', result);
} catch (error) {
  // Que faire si une erreur est générée
  console.error('Oups :', error.message);
}

Exemple de sortie lorsqu’aucune erreur ne se produit :

Succès : 42

Et lorsqu’il y a une erreur :

Oups : Quelque chose s'est mal passé

Pour le code asynchrone, où les promesses sont impliquées, utilisez try-catch dans une fonction async :

async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    console.log('Données récupérées :', data);
  } catch (error) {
    console.error('Erreur lors de la récupération des données :', error.message);
  }
}

fetchData();

Plongée en Profondeur

La gestion des erreurs en JavaScript a évolué. Dans le temps (ES3, vers 1999), nous avions tout juste le bloc try-catch. Pas super flexible, mais il faisait l’affaire.

ES6 (2015) a introduit les Promesses et nous a donné .then() et .catch(), nous permettant de gérer les erreurs asynchrones plus élégamment.

fetch('https://api.example.com/data')
  .then(data => console.log('Données récupérées :', data))
  .catch(error => console.error('Erreur lors de la récupération des données :', error.message));

En ce qui concerne les détails de l’implémentation, lorsque une erreur est générée, les moteurs JavaScript créent un objet Error avec des propriétés utiles comme message et stack. Vous pouvez également créer des types d’erreurs personnalisés en étendant la classe Error – pratique pour des applications plus complexes.

Des alternatives ? Vous pourriez ignorer la gestion des erreurs (mauvaise idée), utiliser des callbacks avec des paramètres priorisant les erreurs (bonjour le style Node.js), ou vous sophisticquer avec des bibliothèques et des frameworks qui proposent leur propre gestion des erreurs.

Voir Aussi

Pour en savoir plus sur la gestion des erreurs :