Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] Gestion des erreurs

11 réponses
Avatar
Cyrille
Bonjour,

Je souhaite intercepter les erreurs sur un programme en windev 11.
Je ne voudrais pas que l'utilisateur ait les messages d'erreur mais
qu'ils soient automatiquement mis en base de données (pas forcement tout
le message mais déjà l'heure).

J'ai regarder du coté de gérer erreur et gérer exception mais ca affiche
quand même un message (encore pire que celui par défaut car il n'informe
plus grand chose). De plus j'ai pas mal de fonctions et procédures donc
ca m'embête de mettre un gestionnaire d'erreur sur chaque.

Pour résumer je veux un gestionnaire d'erreur invisible, qui inscrit
dans une base de données les infos et qui n'arrête pas le programme (le
logiciel contrôle un automate donc c'est gênant de l'arrêter).

Merci de votre aide

10 réponses

1 2
Avatar
Eric Laurent
Bonjour,

Une solution (que j'utilise) consiste à lancer le programme via un
script, d'activer l'interception des erreurs à l'ouverture du projet,
et de renvoyer une valeur variable selon le mode de fermeture du
programme.
En cas d'erreur, on ecrit dans un fichier log les informations sur
l'erreur puis on ferme le programme. Le VBS teste l'errorlevel et en
cas de mauvaise valeur, il relance le programme.

Voici par exemple le code que j'utilise:

----------------------------------------------------------------------
//Dans le code d'ouverture du projet
CodeRetourAppli est un entier //Variable que l'on va faire tester
par le VBS

QUAND EXCEPTION
Trace(ExceptionInfo(errMessage))

FNuméro_Fichier est un entier
FTexteErreur est une chaîne
FTexteErreur=ExceptionInfo(errMessage)
FTexteErreur=Remplace(FTexteErreur,Caract(10),RC)
FTexteErreur= RC+RC+RC+Répète("-",80)+RC+...
"le "+DateVersChaîne(DateSys())+...
" à "+Gauche(HeureVersChaîne(HeureSys()),8)+...
RC+Répète("-",80)+RC+FTexteErreur
FNuméro_Fichier =
fOuvre(RepertoireFichiers+"ERREURS.LOG",foAjout+foCréationSiInexistant)
SI FNuméro_Fichier <> -1 ALORS
fEcritLigne(FNuméro_fichier,FTexteErreur)
fFerme(FNuméro_Fichier)
FIN
FinProgramme
FIN
----------------------------------------------------------------------
//Dans le code de fermeture du Projet (et de la session)
RENVOYER CodeRetourAppli

----------------------------------------------------------------------
//Pour la fermeture normale du programme il faut mettre la variable
CodeRetourAppli à la valeur souhaitée
CodeRetourApplix67

----------------------------------------------------------------------

//Le code du VBS
Dim WSH, ReturnCode, Rien
Set WSH = CreateObject("WScript.Shell")
Do
ReturnCode = WSH.Run("C:Program FilesMon_ProgMon_Prog.exe",8,true)
Loop While ReturnCode<> 7867 'STOP

//Ici, tant que le retour de la fin du programme ne sera pas 7867, il
sera relancé.



Cordialement,

Eric

--
Eric Laurent

(enlever nospam.)
Avatar
JeAn-PhI
Cyrille a formulé ce lundi :
Bonjour,

Je souhaite intercepter les erreurs sur un programme en windev 11.
Je ne voudrais pas que l'utilisateur ait les messages d'erreur mais qu'ils
soient automatiquement mis en base de données (pas forcement tout le message
mais déjà l'heure).

J'ai regarder du coté de gérer erreur et gérer exception mais ca affiche
quand même un message (encore pire que celui par défaut car il n'informe plus
grand chose). De plus j'ai pas mal de fonctions et procédures donc ca
m'embête de mettre un gestionnaire d'erreur sur chaque.

Pour résumer je veux un gestionnaire d'erreur invisible, qui inscrit dans une
base de données les infos et qui n'arrête pas le programme (le logiciel
contrôle un automate donc c'est gênant de l'arrêter).

Merci de votre aide



faire un "Quand Exception" dans l'init du projet et dans le traitement
de cette dernière faire un ExecptionActive()

--
Cordialement JeAn-PhI
Avatar
Eric Laurent
faire un "Quand Exception" dans l'init du projet et dans le traitement de
cette dernière faire un ExecptionActive()



Le 'ExceptionActive' n'est pas nécessaire puisque l'on ferme le
programme par 'FinProgramme'.

--
Eric Laurent

(enlever nospam.)
Avatar
JeAn-PhI
Eric Laurent avait énoncé :
faire un "Quand Exception" dans l'init du projet et dans le traitement de
cette dernière faire un ExecptionActive()



Le 'ExceptionActive' n'est pas nécessaire puisque l'on ferme le programme par
'FinProgramme'.



vous fermez le prog par un FinProgramme() mais il veut peut être le
laisser ouvert ?

--
Cordialement JeAn-PhI
Avatar
Romain PETIT
JeAn-PhI a présenté l'énoncé suivant :

vous fermez le prog par un FinProgramme() mais il veut peut être le laisser
ouvert ?



Tiens, c'est la question que je me posais...
Quand on met un QUAND..EXCEPTION en init du projet, je crois que de
toutes façons, même sans un FinProgramme, l'appli se termine.

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
JeAn-PhI
Romain PETIT a exprimé avec précision :
JeAn-PhI a présenté l'énoncé suivant :

vous fermez le prog par un FinProgramme() mais il veut peut être le laisser
ouvert ?



Tiens, c'est la question que je me posais...
Quand on met un QUAND..EXCEPTION en init du projet, je crois que de toutes
façons, même sans un FinProgramme, l'appli se termine.



en fait elle se relance chez moi

--
Cordialement JeAn-PhI
Avatar
Cyrille
JeAn-PhI a écrit :
Eric Laurent avait énoncé :
faire un "Quand Exception" dans l'init du projet et dans le
traitement de cette dernière faire un ExecptionActive()



Le 'ExceptionActive' n'est pas nécessaire puisque l'on ferme le
programme par 'FinProgramme'.



vous fermez le prog par un FinProgramme() mais il veut peut être le
laisser ouvert ?



Oui je veux que le programme tourne toujours et se réinitialise au pire.
Avatar
Romain PETIT
JeAn-PhI a couché sur son écran :

en fait elle se relance chez moi



Par un processus externe ?

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
Eric
On 23 mar, 09:47, Romain PETIT wrote:
JeAn-PhI a couché sur son écran :

> en fait elle se relance chez moi

Par un processus externe ?

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windevhttp://www.mesnews.net/http://fr.wik ipedia.org/wiki/Newsgroup



Bonjour
ma solution est de rendre l'appli multi-instance , puis quand je capte
une erreur d'exception, je relance l'appli avec un argument qui le
signale
je ferme l'exe en cours.
et au demarrage je recupere avec lignedecommande
et suivant ce que je souhaite, je guette les processus afin d'attendre
d'en avoir qu'un seul pour continuer

Eric
Avatar
JeAn-PhI
Romain PETIT a exprimé avec précision :
JeAn-PhI a couché sur son écran :

en fait elle se relance chez moi



Par un processus externe ?



non toute seule

--
Cordialement JeAn-PhI
1 2