4. Gestion des erreurs

Pour gérer les erreurs qui peuvent survenir lors de l’appel à une API, il est important d’utiliser les mécanismes de gestion des erreurs fournis par le langage de programmation utilisé. En Dart, il est courant d’utiliser les blocs try-catch-finally pour gérer les erreurs.

Pas de connexion Internet : Pour gérer ce cas, je vérifierais la connectivité de l’appareil avant de faire l’appel API. Dart dispose d’une bibliothèque ‘connectivity_plus’ pour vérifier l’état de la connectivité.

Erreur du serveur : Lorsqu’une erreur se produit côté serveur, la réponse HTTP renvoyée est généralement un code d’erreur (par exemple 404, 500, etc.) accompagné d’un message d’erreur. Pour gérer cette erreur, je vérifierais le code d’erreur renvoyé dans la réponse HTTP et renverrai un message approprié selon le code.

Erreur de parsing : Lorsque vous recevez une réponse de l’API, elle est généralement sous forme de données JSON. Nous avons vu dans le chapitre précédent comment fonctionnait le parsing, imaginons qu’une variable est attendue sous format String mais que nous recevons un int à la place, il faudra prendre en compte cette possibilité et englober la methode de parsing par un try catch.

Voici un exemple de gestion des erreurs lors d’une requète à un API.

switch (response.statusCode) {
  case 400:
    throw Exception('Requête invalide');
  case 401:
    throw Exception('Authentification requise');
  case 403:
    throw Exception('Accès refusé');
  case 404:
    throw Exception('Ressource introuvable');
  case 500:
    throw Exception('Erreur interne du serveur');
  // ...autres codes d'erreur
  default:
    throw Exception('Erreur inattendue: ${response.statusCode}');
}

Aller plus loin

Retries et backoff exponentiel: Lorsqu’une erreur temporaire se produit lors de l’appel à une API, il peut être utile de retenter la requête après un court délai. Le backoff exponentiel est une stratégie courante pour gérer les tentatives de réexécution. Essayez de mettre en place cette technique sur les appels à l’API. Vous pouvez par exemple couper la connexion internet et afficher des print ou des éléments à l’écran pour indiquer le nombre de retry.

Bibliothèque Dio: Dio est une bibliothèque HTTP puissante et flexible pour Dart qui offre de nombreuses fonctionnalités avancées, y compris la gestion des erreurs, les retries, l’interception des requêtes et des réponses, et bien plus encore. https://github.com/cfug/dio

Chopper est une autre bibliothèque HTTP pour Dart qui suit la philosophie de Retrofit (une bibliothèque populaire pour Android) et génère du code pour simplifier la gestion des requêtes et des réponses. https://github.com/lejard-h/chopper

Error handling in Dart: Pour approfondir les concepts de gestion des erreurs en Dart, les lecteurs peuvent consulter la documentation officielle de Dart sur la gestion des erreurs: https://dart.dev/guides/language/effective-dart/usage#do-use-try-catch-to-catch-exceptions-you-can-handle

Gestion des erreurs en Flutter: Les lecteurs intéressés par le développement d’applications Flutter peuvent explorer la documentation officielle de Flutter sur la gestion des erreurs: https://docs.flutter.dev/testing/errors

La gestion des erreurs est une partie importante du développement d’applications et en utilisant les mécanismes appropriés, les développeurs peuvent améliorer la qualité de leur code et fournir une meilleure expérience utilisateur.