Bonjour,
comment utilisez-vous la gestion automatique des erreurs?
personnellement j'ai un problème: Ce que je voudrais, c'est qu'a chaque erreur de l'application (erreur, exception, plantage, bref tout ce qui n'est pas normal), je puisse remplir une table avec l'utilisateur, l'heure de bug, quel traitement c'était, quel ligne et quel message a t-il eu. J'utilisais jusqu'à présent un code "QUAND EXCEPTION" dans l'initialisation de mon projet ou je remplissais ma table avec les exceptioninfo() générées. Il y avait des limites car je ne pouvais pas distinguer a quel moment il fallait que je "plante" mon utilisateur pour l'éviter d'aller plus loin ou si je pouvais le laisser continuer le traitement. Donc je le plantais à chaque fois par sécurité et c'était nickel, j'étais au courant de toute erreur.
Avec la V10 de Windev qui traite le problème, je créé 2 procedures globales: 1) une qui rempli ma table et plante l'utilisateur 2) une qui rempli ma table et qui redonne la main a l'utilisateur. Charge a moi d'appeler la procedure qui va bien dans chaque traitement critique.
Sauf que désormais, on ne traite plus des exceptions mais des erreurs! Je m'explique: Lorsque, avec la version 9, je générais une exception a cause d'un doublon par exemple c'est parce que je ne captais pas l'erreur de doublon en elle meme mais l'exception générée par un hlitrecherche (par exemple) SUITE a une erreur de doublon! NUANCE.
Or je m'aperçois que la gestion automatique des erreurs capte l'erreur directement sans attendre une exception ce qui est très bien. le problème, c'est que, qui dit erreur ne dit plus exception et donc finis les erreurinfo(errligne) ou erreurinfo(errElement) qui me renseignaient sur la ligne et le moment de L'EXCEPTION! Dans le cas d'une ERREUR, ces erreurinfo(errligne) et erreurinfo(errElement) ne donne RIEN!: "" et 0. Ce n'est pas trop grave, je me débrouille avec erreurinfo(errcomplet) bien que ça ne soit pas pratique.
Mais le plus important c'est que, lorsqu'on traite une exception on avait toujours le "exceptionActive()" qui permet de ne pas "planter" windev et de traiter l'exception. Or la on ne peux plus! Pas de "erreurActive()", rien! Ce qui entraine ceci:
1) je génére mon erreur de doublon 2) l'erreur est captée par la gestion automatique des erreurs et exectute la procédure globale "erreur_detectee" 3) ma procedure globale rempli ma table d'erreur MAIS, génére une exception des le premier "hajoute" car nous sommes en erreur donc pas moyen de faire un "Hquelquechose" sans générer une exception! 4) ma table d'erreurs est remplie a ma grande surprise mais dès mon "RENVOYER opAnnuler" de la fin de ma procedure, j'ai droit a un message de plantage: "le mécanisme de sécurité du W-langage a détecté un problème inattendu" "Une erreur de doublon est survenue sur la fonction 'Hajoute' précédente (celle que j'ai générée) et n'a pas été traitée" Or SI justement je l'ai traité mais comment lui dire?
Avez-vous une idée?
sinon, comment utilisez-vous la gestion automatique des erreurs, vous?
Merci d'avance. |