| On_Error_Goto | |
|
|
Auteur | Message |
---|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: On_Error_Goto Mer 21 Jan 2015 - 20:38 | |
| Il arrive assez souvent (à moi en tout cas) pendant la mise au point d'un programme, et parfois après à la suite d'une manoeuvre non prévue, ou d'une modif malencontreuse, qu'on ait un plantage rédhibitoire qui fait qu'on a perdu définitivement tout ce qui a été fait avant. Avec le On_Error_Goto, on bénéficie d'un répit qui permet d'intervenir (sauvegarder éventuellement) avant le plantage définitif. Ce peut être une sauvegarde de type graphique, texte, à adapter suivant les cas. Mais il faut le prévoir systématiquement, à tout hasard, en début de programme, par exemple: - Code:
-
... ON_ERROR_GOTO Zzerr END ' ------- Zzerr: fpr$ = "C:\Temp\Sauve.bmp" a$ = "Le programme va se terminer sur 'OK'."+CHR$(13)+CHR$(10) a$=a$+"La page actuelle est sauvegardée sous :"+CHR$(13)+CHR$(10)+fpr$ FILE_SAVE p,fpr$: ' ici, sauvegarde du picture p, mais ça peut être n'importe quoi d'autre Erreur(100,60,a$): ' affichage d'une boîte d'erreur en 100,60, avec type erreur et texte explicatif. TERMINATE ' ------- ' ------- SUB Erreur(x%,y%,txt$) ' Appel sur On_Error_Goto, affichage d'une boîte d'erreur en x%,y%, ' avec les caractéristiques de l'erreur et le texte txt$, avant sortie définitive. DIM_LOCAL nf%,fe% LABEL Ferreur nf% = 1000: WHILE OBJECT_EXISTS(nf%)=1: nf%=nf%+2: END_WHILE FORM nf%: TOP nf%,y%: LEFT nf%,x%: BORDER_SMALL nf%: CAPTION nf%,tit$ WIDTH nf%,480: HEIGHT nf%,190: FONT_BOLD nf%: FONT_NAME nf%,"Lucida Console" FONT_SIZE nf%,11: CAPTION nf%," *** ERREUR FATALE ! ***" MEMO nf%+1: PARENT nf%+1,nf%: FULL_SPACE nf%+1: COLOR nf%+1,255,255,128 ERROR_FRENCH ITEM_ADD nf%+1,"Erreur ligne n°: "+STR$(ERROR_LINE) ITEM_ADD nf%+1,"Erreur type : "+STR$(ERROR_NUMBER) ITEM_ADD nf%+1,"Libellé : "+ERROR_TYPE$ ITEM_ADD nf%+1,"": ITEM_ADD nf%+1,txt$: ' texte supplémentaire BUTTON nf%+2: PARENT nf%+2,nf%: TOP nf%+2,HEIGHT(nf%)-60 LEFT nf%+2,WIDTH(nf%+1)/2-40: CAPTION nf%+2,"OK": ON_CLICK nf%+2,Ferreur WHILE fe%=0: WAIT 500: END_WHILE: EXIT_SUB Ferreur: fe%=1 RETURN END_SUB | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Error_Goto Mer 21 Jan 2015 - 21:02 | |
| Oui, c'est bien pratique pour débugguer | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Mer 21 Jan 2015 - 21:17 | |
| Je ne pensais pas seulement au debuggage, mais aussi après, pendant l'exploitation. L'expérience montre qu'il y aura toujours un utilisateur qui va faire une manoeuvre imprévue qui fera planter le programme, et on sera bien content d'avoir une sauvegarde de ce qui a été fait jusque là.
Dans le même ordre d'idée, y a t'il un moyen, quand on est dans un programme de visualiser une ligne quelconque de ce programme donnée par son numéro ? par exemple on part en erreur, et connaissant le numéro de la ligne de l'erreur de visualiser cette même ligne. Et/ou les quelques lignes autour. Je parle ici d'un lancement sous éditeur, avec des modifications éventuelles par rapport à la version enregistrée en .bas.
Ou bien, ce qui reviendrait au même, provoquer par programme l'enregistrement de ce même programme en cours d'exécution qui se trouve dans Panoramic_Editor (un peu tordu comme idée ?). | |
|
| |
papydall
Nombre de messages : 7006 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 0:37 | |
| Et si Panoramic_Editor se comporterait autrement, comme certains autres langages le font ? Je m’explique : Certains langages de programmation refusent catégoriquement l’exécution (compilation ou interprétation) du programme avant son enregistrement. Après avoir tapé son programme, si on souhaite l’exécuter sans le sauvegarder, le système affiche un message du genre : Vous devez enregistrer votre programme avant. Pour toute modification ultérieure du code, le système pose la même question de la sauvegarde.
Certains diront que ça sera une contrainte ; pour d’autres c’est une garantie. Qu’en pensez-vous, vous qui êtes entrain de lire cette prose ? | |
|
| |
Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 22 Jan 2015 - 1:08 | |
| Cela pourrait être un mieux même si cela serait contraignant. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 7:52 | |
| Jack ne veut pas trop toucher à l'éditeur, alors je pense que ce serait plutôt une option à ajouter dans les éditeurs de Klaus et d'Ygeronimi | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 9:43 | |
| Eh bien personnellement je trouve que c'est plutôt bien pratique de pouvoir exécuter sans enregistrer ! Pour tester des petites modifs, mettre des points d'arrêt avec des 'Message', etc. s'il fallait enregistrer à chaque fois avant exécution en détruisant l'original je trouve que ce serait plutôt contraignant.
Je n'enregistre que pour valider mes modifications, et de toute façon il y a le .bak qui fait très bien l'affaire si on a un problème.
Je trouve que Panoramic_Editor est très bien tel qu'il est, à quelques broutilles près, c'est mon avis, et je le partage. | |
|
| |
mimic
Nombre de messages : 103 Localisation : france Date d'inscription : 02/09/2009
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 10:53 | |
| Je partage l’avis de JL35.
Pour moi, ce qui manque à Paranomic, c’est la possibilité d’exécuter le code pas à pas …
| |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 13:32 | |
| Oui mimic, mais ce n'est pas le même langage, Paranomic ce n'est pas pareil que Panoramic Blague à part, faire du pas à pas dans un langage événementiel, ça me paraît difficilement concevable. | |
|
| |
mimic
Nombre de messages : 103 Localisation : france Date d'inscription : 02/09/2009
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 13:56 | |
| oups... La grippe me fatigue...
| |
|
| |
Klaus
Nombre de messages : 12293 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 14:30 | |
| @JL35: Dans SyneditEditor, je le fais en mode debug...
| |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 15:54 | |
| J'avoue que je ne l'ai pas encore essayé, justement par manque de motivation puisque l'éditeur originel convient bien à mes besoins. Par paresse aussi, certes. Mais je ne doute pas que les possibilités d'édition doivent être très augmentées, pour des besoins plus spécifiques, d'après ce que j'en ai lu ici au fur et à mesure des parutions de mise au point.
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 16:03 | |
| Bon ,le sujet n'est pas sur l'éditeur Panoramic, je vais donc faire court. En fait, ce qui est super avec Synedit: c'est que le programme est ouvert et que tu peux y ajouter tous les outils que tu veux tu peux replier des sections de code quand tu n'en n'a pas besoin ou pour augmenter la lisibilité tu peux imprimer directement tu peux débugguer et afficher la valeur de variables à un moment donné ... Je recolle au sujet avec ceci: Le On_Error_Goto peut permettre de débugger (entre autre avec l'éditeur intégré) mais son utilité est en effet aussi pour les versions finales de gérer les erreurs, quand elles sont prévisibles ou non pour faire une action, afficher un message, sortir "proprement du programme" ou simplement pour reprendre le programme comme si de rien était à un endroit donné. | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 16:18 | |
| ... ou simplement pour reprendre le programme comme si de rien était à un endroit donné
Ah bon, tu es sûr ? Pour moi la fermeture du programme est inéluctable après l'exécution du bout de programme visé par le on_error_goto ? | |
|
| |
Klaus
Nombre de messages : 12293 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 17:43 | |
| Tu peux te servir du ON_ERROR_GOTO de façpn beaucoup plus discriminante. Place une telle commande devant toute section de code pouvant potentiellement générer une erreur, mais chacune avec un label différent. Tu peux alors afficher des messages d'erreur plus ciblés, et même faire des traitements de récupération, pour pouvoir continuer. Il suffit de désactiver cela par on OFF_ERROR_GOTO lorsque l'erreur est traitée, ou alors faire un ON_ERROR_GOTO vers un autre label. | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 18:03 | |
| ... faire des traitements de récupération, pour pouvoir continuer Il faut que j'étudie ça un peu plus à fond, mais pour moi le On_Error_Goto permet de différer l'arrêt du programme (permettant effectivement de faire un signalement, une sauvegarde), mais que de toute façon l'erreur est fatale et conduit inéluctablement à l'arrêt du programme.
Je ne vois pas bien comment on peut poursuivre le programme avec un Off_Error_Goto après une erreur quelconque, syntaxe, etc. ce qui voudrait dire ignorer l'erreur ? la suite n'aurait plus de sens...
Je sais bien qu'on peut mettre des On_Error et des Off_Error n'importe où, mais si l'erreur survient, le programme est terminé. Enfin je crois. | |
|
| |
Klaus
Nombre de messages : 12293 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Error_Goto Jeu 22 Jan 2015 - 18:33 | |
| Pas forcément. Tout dépend du contexte. Si tu saisis par exemple une information à l'écran, est-ce que tu te donnes la peine d'analyser la chaîne de caractères sous toutes les coutures pour vérifier que la réponse est bien valide ? Numérique, par exemple, en valeur entière sans fractions et entre deux bornes bien spécifiques ? Il suffit de faire un ON_ERR9R_GOTO, d'affecter la saisie dans une variable appropriée et de faire un OFF_ERROR_GOTO. En cas d'erreur, tu fais également un OFF_ERROR_GOTO, tu signales "erreur de saisie" et tu attends une nouvelle saisie.
Ce n'est qu'un petit exemple. Tu peux envelopper tous tes traitements de fichiers dans un ON_ERROR_GOTO. Et en cas d'anomalie, tu signales "fin de fichier prématurée", "erreur en écriture", que sais-je. De multiples choses peuvent survenir, et il est impossible de se prémunir de tout. Pourtant, dans beaucoup de cas, il suffit d'avertir l'utilisateur qu'il y a un problème et de lui laisser la décision pour la suite. Juste un exemple: on veut écrire sur un disque externe, il est bien présent, mais en protection d'écriture. Pourquoi planter tout le programme ? On intercepte l'erreur, on avertit l'utilisateur, et on arrête le traitement, pas le programme. Il lui suffira alors d'enlever la protection d'écriture et de déclencher un nouvel essai. | |
|
| |
Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 22 Jan 2015 - 19:29 | |
| Je reviens sur l' obligation d' enregistrer quelques secondes. Pour ce qui est de mon éditeur ( que je suis en train de refaire ), il y a 5 fichiers source. ces fichiers sont assemblés pour n' en faire qu' 1 à chaque prévisualisation. Je peux obliger l' enregistrement des fichiers avant une prévisualisation mais cela ne changera pas grand chose au chmilblick. Il faudrait une fonction "debug" avant l' envoie de ce fichier à Panoramic.exe pour le visualiser. Si il y a un amateur, perso je ne m' en sens pas capable, je rajouterai le bouton dans la barre d' outils avec joie. Cet éditeur est tout autant le votre que le mien. | |
|
| |
Contenu sponsorisé
| Sujet: Re: On_Error_Goto | |
| |
|
| |
| On_Error_Goto | |
|