PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Gérer les exceptions
Gérer les exceptions
Débuté par Houssem, 30 jan. 2006 23:28 - 3 réponses
Posté le 30 janvier 2006 - 23:28
Bonjour,
J'ai un problème concernant les gestions des exceptions.
J'ai mis:

QUAND EXCEPTION DANS
HAJOUTE(Nom_fich)
FAIRE
Code de traitement de l'exception
FIN
et je fais expret à provoquer une erreur de doublon mais le Code de traitement de l'exception ne se déclenche pas

Merci.
Posté le 01 février 2006 - 10:49
normal ce n'est pas un bug, il faut faire

SI pas hAjoute()
FIN

ou

HAjoute()
Si HerreurDoublon()
FIN

Houssem avait prétendu :
Bonjour,
J'ai un problème concernant les gestions des exceptions.
J'ai mis:

QUAND EXCEPTION DANS
HAJOUTE(Nom_fich)
FAIRE
Code de traitement de l'exception
FIN
et je fais expret à provoquer une erreur de doublon mais le Code de
traitement de l'exception ne se déclenche pas

Merci.



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 01 février 2006 - 11:21
Penser à une gestion centralisée des exceptions:
définir une procédure globale:
PROCEDURE SurAutreErreur()

SELON HErreur(hErrEnCours)
CAS 70015
Erreur("Erreur d'integrité "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70100
Erreur("erreur de blocage"+ErreurInfo())
RENVOYER opFinTraitement

CAS 70010
Erreur("Erreur de doublons "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70700
Erreur("Erreur de modification : "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70710
Erreur("Erreur de valeur obligatoire "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70720
Erreur("Erreur de réindexation "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70022
Erreur("Erreur de mot de passe"+ErreurInfo())
RENVOYER opFinTraitement

FIN


et puis aller au code d'initialisation du projet et ajouter la ligne:
HSurErreur("*",hErrIntégrité + hErrDoublon + hErrModification + hErrMotDePasse , "SurAutreErreur" )


rajouter aussi l'exception au code d'initialisation du projet (optionnelle):
QUAND EXCEPTION
Info("L'application va être fermée car elle a rencontré des problèmes : "+ExceptionInfo)
FIN


tenez moi au courant des résultats!!
Posté le 01 février 2006 - 12:04
Bonjour

"Mouad" <saadidimiad@yahoo.fr> a écrit dans le message de news:
43e07a19$1@news.pcsoft.fr...


Penser à une gestion centralisée des exceptions:
définir une procédure globale:
PROCEDURE SurAutreErreur()

SELON HErreur(hErrEnCours)
CAS 70015
Erreur("Erreur d'integrité "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70100
Erreur("erreur de blocage"+ErreurInfo())
RENVOYER opFinTraitement

CAS 70010
Erreur("Erreur de doublons "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70700
Erreur("Erreur de modification : "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70710
Erreur("Erreur de valeur obligatoire "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70720
Erreur("Erreur de réindexation "+ErreurInfo())
RENVOYER opFinTraitement

CAS 70022
Erreur("Erreur de mot de passe"+ErreurInfo())
RENVOYER opFinTraitement

FIN


et puis aller au code d'initialisation du projet et ajouter la ligne:
HSurErreur("*",hErrIntégrité + hErrDoublon + hErrModification +
hErrMotDePasse , "SurAutreErreur" )


rajouter aussi l'exception au code d'initialisation du projet
(optionnelle):
QUAND EXCEPTION
Info("L'application va être fermée car elle a rencontré des problèmes :
"+ExceptionInfo)
FIN


tenez moi au courant des résultats!!



Il faut également penser à gérer le problème suivant:

Soit un logiciel qui manipule un fichier HF nommé CLIENT.
Il n'y a pas d'index, ni de mémo (donc pas de fichier CLIENT.NDX ni de
fichier CLIENT.MMO)
Le truc tout simple (cette situation est valable, bien sur, lorsque le
fichier comporte un index et un mémo).

Imaginons que nous soyons en présence d'un utilisateur qui aime bien mettre
les mains dans le cambouis et qui bricole donc souvent dans les fichiers
(dans le grand public il y a beaucoup de personnes qui font des
manipulations quelquefois hasardeuses dans les fichiers).
Un jour, il place (volontairement ou non) dans l'emplacement de stockage des
fichiers de données du logiciel, un fichier CLIENT.FIC qui vient d'un autre
logiciel.
Rien de plus commun, en effet, qu'un fichier client s'appelant CLIENT pour
une application WD (ou qu'un fichier STOCK également)

Donc et comme vous pouvez l'imaginer, au démarrage du logiciel ou lorsque le
fichier va être manipulé, cela va coincer dur ...

Il faut donc gérer cette anomalie car, dans cette situation, le logiciel est
inutilisable.
Normalement, sous WD10, cette erreur porte le code "70150" (on la récupère
via HErreur(hErrEnCours))

Sauf erreur de ma part, cette erreur ne peut pas être gérée par HSurErreur
Donc, il faut prévoir (dans le code INIT du projet par exemple) une
exception qui détecte l'erreur 70150 de façon à, lorsqu'elle se présente,
prévenir l'utilisateur de la situation et lui demander:
1) soit de restaurer, dans l'emplacement de stockage, le fichier qui
appartient bien au logiciel
2) soit de sélectionner une commande spéciale intégrée au logiciel et prévue
à cet effet, pour supprimer le fichier via la commande Fsupprime et
restaurer ainsi le bon fonctionnement du logiciel.

Ce type de situation se rencontre régulièrement

Pour simuler cette situation et, par conséquent, pour voir si vous pouvez
être confronté à ce problème, faites la manip suivante:
1) ouvrez un fichier HF (le fichier FIC) dans le bloc notes de Windows
2) modifiez les 3 premiers caractères de ce fichier HF (généralement PCS) et
enregistrez
3) démarrez le logiciel qui utilise le fichier HF en question et voyez ce
que cela donne

A+

Val