Commençons par le début … la gestion d’erreurs 😉
La classe cErreur
Cette classe permet de centraliser la gestion des erreurs apparaissant dans le projet.
Si une méthode du framework ne s’exécute pas comme attendu, son message d’erreur est accessible par : MonObjet.p_sErreur
Si une fonction (d’une collection) ne s’exécute pas comme attendu, son message d’erreur est accessible par : ErreurInfo(errMessage). Chaque collection de procédure a un code erreur spécifique dans l’initialisation de la collection (ex: ErreurDeGUI = 110 dans COL_GUI)
Pour ajouter une erreur survenue dans votre code, vous pouvez la gérer de manière locale ou de la mettre en mémoire de l’objet cApplication. Exemple : mpclApp.m_pclErreur.AjouteErreur(MonMessageErreur) avec mpclApp = l’instance global cApplication du projet.
Toute erreur ajoutée par AjouteErreur est donc mise dans un tableau en attendant d’être exploitée/affichée (voir ci-dessous les méthodes accessibles). Pour vider le tableau d’erreurs : utilisez la méthode m_pclErreur.Raz.
Parfois on a juste besoin de renvoyer un message d’avertissement. Voilà pourquoi existe la méthode AjouteAvertissement(MonMessageAvertissement) qui se base sur le même principe de AjouteErreur. La méthode m_pclErreur.Raz vide autant le tableau d’erreurs que celui des avertissements.
Les erreurs et avertissements peuvent être des chaines mais peuvent aussi venir de WinDev (voir les fonctions ErreurInfo, hErreurInfo, ExceptionInfo et SQL.MesErreur). Cette syntaxe est abandonnées au profit des fonctions améliorées tels que : AjouteErreurHF, AjouteErreurAS400, AjouteErreurWx et AjouteErreurODBC. Les messages y sont reconstruits pour être plus pertinents (et ne pas dépasser la taille de l’écran !). Vous verrez donc dans le framework une syntaxe du genre m_pclErreur.AjouteErreurWx() qui récupère donc le ErreurInfo(errMessage)
La classe cGénérique
La classe cGénérique est commune à toutes les autres classes. S’il faut modifier un comportement général à tout le framework ou donner accès à d’autres constantes, c’est la place privilégiée.
Elle permet d’accéder à quelques constantes (dont une très utilisée : le séparateur ASCII 149) et contient un objet m_pclErreur de type cErreur (voir ci-dessus).
Dans le cas de la manipulation d’objets complexes (qui contiennent d’autres objets individuels ou sous forme de tableaux), des erreurs peuvent apparaître dans chacun de ces objets. Pour les récupérer toutes d’un coup dans l’objet principal, utiliser MonObjet.p_sErreurTout.
Vous voulez l’erreur sous format JSON pour l’archiver dans un fichier texte (voir cTrace) ou l’envoyer comme réponse dans votre webservice : p_sErreurJSON et p_sErreurJSONTout sont là pour ça.
Toutes ces fonctions ont leur correspondance dans la gestion d’avertissements.
Cette classe contient également un membre particulier : m_vDéfinition qui contient la définition de l’ensemble de l’objet manipulé (pour des traitements dans ou en dehors du framework). Attention, les définitions ne sont pas disponibles sur toutes les plateformes (limitation WinDev).