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).
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.)
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
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
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.)
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
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()
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
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.)
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
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
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
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
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
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
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
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.
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
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.
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.
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.
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
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
-- 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
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
On 23 mar, 09:47, Romain PETIT <Vo...@Signature.fin> 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
-- 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