Seulement 10 types d’erreurs Java génère 97% des logs d’erreurs !

Sur les systèmes de production qu’elle gère, la société Takipi a analysé 1 milliard d’erreurs Java soit 2,7 To de fichiers logs. Il en ressort que 10 types d’erreurs Java représentent 97% des logs d’erreurs !

Les 10 types d’erreurs  sont

  • NullPointerException
  • NumberFormatException
  • IllegalArgumentException
  • RuntimeException
  • IllegalStateException
  • NoSuchMethodException
  • ClassCastException
  • Exception
  • ParseException
  • InvocationTargetException

Ce qui m’amène à penser :

  • Ce n’est pas une nouveauté que l’erreur « pointeur nul » (« NullPointException ») ai la première place.
    Mais si les mêmes programmes étaient écrits en C alors ils planteraient tous !
    Heureusement en Java, le mécanisme de récupérations des erreurs (try…catch) le rend robuste 😉
  • Il n’est pas normal que 10 erreurs représentent 97% des erreurs :
    • soit elles sont trop génériques pour englober la plupart des erreurs 😉
    • soit elles sont mal gérées :
      – des bogues : à réparer d’urgence !
      – des interfaces utilisateurs trop permissives alors qu’elle devrait aider et valider les données saisies (cas du NumberFormatException habituellement) par ces derniers.
      – des pertes de connexion réseau. Mais dans ce dernier cas, on devrait voir des « IOException », sauf si l’erreur « ExceptionNull » l’englobe . Si c’est le cas alors ces erreurs sont trop génériques (voir 1er point).
  • Imaginer si le développeur pouvait supprimer ses 10 erreurs : l’analyse des log serait plus facile, nous y gagnerions aussi du temps, et nous serions plus zen 😉
  • En supprimant ces 97% d’erreurs vous gagneriez aussi, leurs espaces disque, votre système de sauvegarde  serait plus rapide et la sauvegarde couterais moins cher (car moins d’espace à sauvegarder)

Si vous avez des commentaires, n’hésitez pas a m’en faire part

Sources 10 erreurs représentent 97% des erreurs (Anglais) :