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

[WD8] Quand Exception

5 réponses
Avatar
Real Phil
Bonjour,

QUAND EXCEPTION
SI ExceptionInfo(errCode)=10019 ALORS // Fenetre inexistante
ERREUR("Mon message ici")
ExceptionActive() // On réactive les exceptions
// On fait quoi ici pour continuer le programme
FIN
FIN

On fait quoi pour que le programme continue après qu'une erreur spécifique
ait été trappée et pour que le logiciel continue comme si de rien n'était?
Je n'ai rien trouvé dans l'aide. Peut-on oser faire un RepriseSaisie?
J'aimerais mieux un genre de "Resume".

Merci à l'avance.

Réal Phil

5 réponses

Avatar
patrice
"Real Phil" a écrit dans le message de
news:%Y6Th.47270$
Bonjour,

QUAND EXCEPTION
SI ExceptionInfo(errCode)019 ALORS // Fenetre inexistante
ERREUR("Mon message ici")
ExceptionActive() // On réactive les exceptions
// On fait quoi ici pour continuer le programme
FIN
FIN

On fait quoi pour que le programme continue après qu'une erreur spécifique
ait été trappée et pour que le logiciel continue comme si de rien n'était?
Je n'ai rien trouvé dans l'aide. Peut-on oser faire un RepriseSaisie?
J'aimerais mieux un genre de "Resume".




on peut pas avoir de résume (d'ailleurs on en a parlé y a pas longtemps)
le mieux pour ca :
quand exception dans
montraitement_qui peut générer exception()
suitetraitement_ok pas d'exception()
faire
gérerl'exception (affichage, log , ...)
exceptionactive()
fin
suite_comme_si de rien n'était, avec ou sans exception précédemment()
Avatar
Real Phil
> > Bonjour,
>
> QUAND EXCEPTION
> SI ExceptionInfo(errCode)019 ALORS // Fenetre inexistante
> ERREUR("Mon message ici")
> ExceptionActive() // On réactive les exceptions
> // On fait quoi ici pour continuer le programme
> FIN
> FIN
>
> On fait quoi pour que le programme continue après qu'une erreur


spécifique
> ait été trappée et pour que le logiciel continue comme si de rien


n'était?
> Je n'ai rien trouvé dans l'aide. Peut-on oser faire un RepriseSaisie?
> J'aimerais mieux un genre de "Resume".
>

on peut pas avoir de résume (d'ailleurs on en a parlé y a pas longtemps)
le mieux pour ca :
quand exception dans
montraitement_qui peut générer exception()
suitetraitement_ok pas d'exception()
faire
gérerl'exception (affichage, log , ...)
exceptionactive()
fin
suite_comme_si de rien n'était, avec ou sans exception précédemment()


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

Merci Patrice,

Je vois. C'est une bonne solution "localement" et c'est à retenir. En fait
c'est probablement la meilleure solution comme tu dis.

Par contre dans mon cas j'ai placé ma trappe d'erreurs au tout début du
projet Windev pour que cela soit toujours actif partout.

Je faisais cela aussi dans mes autres applications en d'autres langages
(comme avec Foxpro). Comme les usagers sont souvent cachottiers et/ou
expliquent mal se qui se passe quand un Bug survient, j'avais mis dans la
trappe d'erreur une écriture automatique dans un fichier Err.txt toute
erreur (avec tous les détails pertinents bien sûr) qui se produisait -
partout. Il me suffisait ensuite d'examiner ce fichier de temps en temps
pour connaître la "solidité" de mon projet.

Avec cette trappe, selon le type d'erreur on offrait à l'usager le choix de
faire un A) Autre essai (Retry) ou de revenir au M) Menu principal de façon
sécuritaire - tout en réactivant la trappe d'erreur.

En regardant ce que tu me propose je crois bien que je pourrais faire la
même chose en dirigeant l'erreur vers une Procédure() qui ferait tout ça et
qui reviendrait au Menu ensuite après avoir réactivé la trappe avec
exceptionactive(). J'ai plusieurs tests à faire.

Penses-tu que cela fonctionnerait?

Réal Phil
Avatar
patrice
"Real Phil" a écrit dans le message de
news:Do8Th.37556$
En regardant ce que tu me propose je crois bien que je pourrais faire la
même chose en dirigeant l'erreur vers une Procédure() qui ferait tout ça


et
qui reviendrait au Menu ensuite après avoir réactivé la trappe avec
exceptionactive(). J'ai plusieurs tests à faire.




je crois qu'il faut adapter le traitement suivant l'origine :
- entete de projet: logger,informer et fermer l'application
- entete de fenetre: logger,informer et fermer la fenetre
- pour les traitements critique sur fichier: logger,informer, annuler le
traitement et continuer
Avatar
Real Phil
Plein de bon sens... je vais aller dans ce sens.
J'ai l'impression que je vais bientôt avoir tout plein de tests à faire dans
ce nouvel environnement.

Merci encore.

Réal Phil

"patrice" a écrit dans le message de
news:461dd7c1$0$24946$
"Real Phil" a écrit dans le message de
news:Do8Th.37556$
> En regardant ce que tu me propose je crois bien que je pourrais faire la
> même chose en dirigeant l'erreur vers une Procédure() qui ferait tout ça
et
> qui reviendrait au Menu ensuite après avoir réactivé la trappe avec
> exceptionactive(). J'ai plusieurs tests à faire.
>

je crois qu'il faut adapter le traitement suivant l'origine :
- entete de projet: logger,informer et fermer l'application
- entete de fenetre: logger,informer et fermer la fenetre
- pour les traitements critique sur fichier: logger,informer, annuler le
traitement et continuer


Avatar
Real Phil
"patrice" a écrit dans le message de
news:461dd7c1$0$24946$
"Real Phil" a écrit dans le message de
news:Do8Th.37556$
> En regardant ce que tu me propose je crois bien que je pourrais faire la
> même chose en dirigeant l'erreur vers une Procédure() qui ferait tout ça
et
> qui reviendrait au Menu ensuite après avoir réactivé la trappe avec
> exceptionactive(). J'ai plusieurs tests à faire.
>

je crois qu'il faut adapter le traitement suivant l'origine :
- entete de projet: logger,informer et fermer l'application
- entete de fenetre: logger,informer et fermer la fenetre
- pour les traitements critique sur fichier: logger,informer, annuler le
traitement et continuer


---------------------------------------
Salut Patrice,

J'ai trouvé sur le forum ta discussion du 20 mars dernier avec JeAn-PhI sur
les exceptions...
http://groups.google.com/group/fr.comp.developpement.agl.windev/browse_thread/thread/313f20f41f65995c/13c528b3e5eae5ef?lnk=st&q=Patrice+exception&rnum=4#13c528b3e5eae5ef

Guidé par tes recommandations j'ai fait quelques tests et ça fonctionne à
merveille.
En fait (quand on sait) c'est très simple, le log se fait aussi très bien -
et facilement personnalisable.
Et si je veux je peux faire un retour au Menu avec Utilise("Menu
Principal"). Bref, un vrai charme.

Réal Phil