Gestion des exceptions

Rapport d’analyse du code d’exception WinDev

1. Gestionnaire d’exceptions globales (GExceptionManager)

  • Utilise un singleton (mg_pclInstance) pour centraliser la gestion.
  • Structure STMessage pour formater les messages d’erreur SQL avec :
    • sMessageUser : message lisible
    • sSQL : requête SQL fautive
  • Procédures disponibles :
    • CatchExceptionProjet : gestion globale des exceptions
    • CatchExceptionTEST / CatchExceptionInstanceNull : gèrent l’exception de test
    • CatchExceptionSQL : pour les erreurs SQL génériques
    • ForcerExceptionTEST / ForcerExceptionSQL : pour déclencher manuellement des exceptions

2. Analyse du code SQLEXEC_PERSO

  • Wrapper autour de SQLExec.
  • Déclenche une exception si l’exécution échoue et que bLanceExceptionSiSyntaxeInvalide est Vrai.
  • Utilise GExceptionManager.ForcerExceptionSQL pour intégrer la gestion centralisée.
  • Bloc CAS EXCEPTION :
    • Code 70237 : reconnexion automatique possible.
    • Code 9999999999 : semble être un placeholder à adapter.
    • Autres cas : propagés avec ExceptionPropage().

3. Recommandations et améliorations proposées

  • Utiliser sSQLErr dans l’appel à ForcerExceptionSQL pour plus d’informations.
  • Remplacer le test DANS (9999999999) par une vraie liste ou plage de codes.
  • Ajouter des logs dans un fichier local ou base pour traçabilité.
  • Envisager une désérialisation du contenu JSON dans CatchExceptionProjet si l’exception est de type SQL.

4. Exemple de code à améliorer

// Version actuelle :
GExceptionManager.ForcerExceptionSQL("TEST", sSQL)

// Recommandé :
GExceptionManager.ForcerExceptionSQL(sSQLErr, sSQL)
        

Analyse générée par ChatGPT — OpenAI — Avril 2025