FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Gestion des labels pour ON_ERROR_GOTO Emptypar Klaus Aujourd'hui à 1:15

» item_index(résolu)
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Gestion des labels pour ON_ERROR_GOTO Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Gestion des labels pour ON_ERROR_GOTO Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Gestion des labels pour ON_ERROR_GOTO Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Gestion des labels pour ON_ERROR_GOTO Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Gestion des labels pour ON_ERROR_GOTO Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Gestion des labels pour ON_ERROR_GOTO Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Gestion des labels pour ON_ERROR_GOTO Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Gestion des labels pour ON_ERROR_GOTO Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Gestion des labels pour ON_ERROR_GOTO Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -39%
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
Voir le deal
399 €

 

 Gestion des labels pour ON_ERROR_GOTO

Aller en bas 
AuteurMessage
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Gestion des labels pour ON_ERROR_GOTO Empty
MessageSujet: Gestion des labels pour ON_ERROR_GOTO   Gestion des labels pour ON_ERROR_GOTO EmptyMar 14 Mai 2013 - 21:23

Lorsqu'on utilise des procédures, on ne peut pas savoir si un ON_ERROR_GOTO est en vigueur, et si oui, vers quel label. Or, on peut être conduit à gérer des erreurs dans une procédure, sans perturber la gestion des erreurs du module principal, et ceci devient encore plus complexe qi une procédure en appelle une autre, etc.

C'est pourquoi je propose 3 solutions à ce problème.

1ère proposition:

Elle est de loin la plus élégante et la plus performante. Je propose une nouvelle commande LABEL_LOCAL sur le modèle de DIM_LOCAL. Tout comme une variable locale, un label local ne serait connu que dans le cadre d'une procédure. Et une gommande ON_ERROR_GOTO_LOCAL n'utiliserait que les labels locaux. On aurait donc:
LABEL_LOCAL N : ' définit un label N localement dans la procédure
ON_ERROR_GOTO_LOCAL N : ' active le label local N comme cible en cas d'erreur
OFF_ERROR_GOTO_LOCAL : ' désactive le ON_ERROR_GOTO_LOCAL

En cas d'erreur, on procède ainsi:
si un ON_ERROR_GOTO_LOCAL est actif, alors on y va
si un ON_ERROR_GOTO est actif, alors on y va
sinon, message d'erreur de Panoramic

Comme une procédure peut en appeler une autre avec à nouveau son propre traitement d'erreur, il faut bien sûr gérer ces labels d'erreur par une pile des labels qui se remplit à l'entrée dans une procédure et qui se vide par EXIT_SUB et END_SUB.

2ème solution:
Je propose la création d'une "pile" de labels pour ON_ERROR_GOTO, cachée à l'intérieur de Panoramic, et manipulable par les nouvelles commandes suivantes:
PUSH_ERROR_GOTO : ' ajouter le label ON_ERROR_GOTO actuel sur la pile
POP_ERROR_GOTO : ' remplacer le label ON_ERROR_GOTO actuel par le haut de la pile
On pourrait ainsi écrire:
Code:

label erreur_programme_principal
on_error_goto erreur_programme_principal
...
traitement()
...
erreur_programme_principal:
' ici, on ne traite que les erreurs du programme principal
...

end

sub traitement()
if label("erreur_traitement")=0 then label erreur_traitement
push_error_goto
on_error_goto erreur_traitement
...
pop_error_goto
exit_sub
erreur_traitement:
' ici, on ne traite que les erreurs de la procédure traitement()
...
pop_error_goto
end_sub

3ème proposition:
cette proposition vise à utiliser une DLIST tout à fait banale pour mémoriser les labels des ON_ERROR_GOTO et de gérer ainsi soi-même cette fameuse pile. Pour cela, i faut une nouvelle variable système et une nouvelle commande:
nom$ = GET_ERROR_GOTO$ : ' cette variable système contient le nom du label ON_ERROR_GOTO actuel
SET_ERROR_GOTO nom$ : ' comme ON_ERROR_GOTO, mais avec le label dans une variable string.
L'exemple ci-dessus deviendrait alors:
Code:

label erreur_programme_principal
dim pile% : pile% = 17
dlist pile%
on_error_goto erreur_programme_principal
...
traitement()
...
erreur_programme_principal:
' ici, on ne traite que les erreurs du programme principal
...

end

sub traitement()
if label("erreur_traitement")=0 then label erreur_traitement
item_add pile%,get_error_goto$
on_error_goto erreur_traitement
...
set_error_goto item_read$(pile%,count(pile%))
item_delete pile%,count(pile%)
exit_sub
erreur_traitement:
' ici, on ne traite que les erreurs de la procédure traitement()
...
set_error_goto item_read$(pile%,count(pile%))
item_delete pile%,count(pile%)
end_sub

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
 
Gestion des labels pour ON_ERROR_GOTO
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Base pour un programme de gestion
» Labels et sous-programmes dans une variable ?
» Subroutine, Function ainsi que labels et variables locales
» Aide-mémoire des mots-clés Panoramic
» gestion de la camera

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: