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
» Logiciel de planétarium.
Gestion des erreurs. Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Gestion des erreurs. Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Gestion des erreurs. Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Gestion des erreurs. Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Gestion des erreurs. Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Gestion des erreurs. Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Gestion des erreurs. Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Gestion des erreurs. Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Gestion des erreurs. Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Gestion des erreurs. Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Gestion des erreurs. Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Gestion des erreurs. Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Gestion des erreurs. Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Gestion des erreurs. Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Gestion des erreurs. Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G ...
Voir le deal
599 €

 

 Gestion des erreurs.

Aller en bas 
3 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Gestion des erreurs. Empty
MessageSujet: Gestion des erreurs.   Gestion des erreurs. EmptyJeu 18 Sep 2014 - 20:10

@Jack.

J'ai remarqué que l'erreur suivante n'était pas reconnue avec la commande 'on_error'.

Il s'agit de 'List index out of bounds'.

Second type d'erreur:

'file_load' d'un objet List, avec un fichier inexistant provoque un plantage, et n'est pas non plus reconnu.
Revenir en haut Aller en bas
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyJeu 18 Sep 2014 - 23:52

Citation :
Il s'agit de 'List index out of bounds'.
Peux-tu donner un exemple ? Est-ce qu'il s'agit d'un problème purement Panoramic ou est-ce lié à quelque chose avec KGF.dll ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 0:37

Je croix savoir ce que voulait dire Pedro Alvarez.

L’erreur List index out of bounds peut être déclenchée s’il manque (par exemple) un END_SUB à une SUB
Dans l’exemple suivant, j’ai omis intentionnellement l’instruction end_sub pour provoquer l’erreur.
Bien qu’il y ait erreur, l’instruction ON_ERROR_GOTO ne se déclenche pas !  Le programme se déroule comme si elle n’existe pas.

Code:
label err
on_error_goto err
test()
end
err:
message "!!!! erreur !!!!"
off_error_goto
end
sub test()
    messge "hello"
' end_sub

Maintenant, si on remet l’instuction end_sub à sa place, alors  ON_ERROR_GOTO fait bien son travail pour signaler l’erreur de la ligne 10 (messge au lieu de message).

Donc (comme l’a remarqué Pedro)  l’erreur List index out of bounds n’est pas reconnue par la commande ON_ERROR_GOTO.



@Klaus
Rassure-toi, rien à voir avec KGF.DLL


Dernière édition par papydall le Ven 19 Sep 2014 - 0:55, édité 2 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 0:44

Merci, Papydall. Effectivement, ça me rassure. J'ai tendance à mettre mes routines en cause si je ne comprends pas un comportement, je tente de reproduire puis de corriger un bug éventuel. Cette fois, ce n'est pas pour moi - tant mieux.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 0:55

Je pense que Panoramic fait un contrôle au tout début sur la cohérence de l’ensemble du code ( un FOR doit avoir un NEXT, un IF doit avoir un END_IF, une SUB doit avoir un END_SUB, etc.).
Si, à ce niveau il détecte une erreur, il la signale AVANT de procéder à l’exécution du programme.
De ce point de  vue, je pense qu'il ne s'agit pas d'un bug dû à la commande ON_ERROR_GOTO.


Dernière édition par papydall le Ven 19 Sep 2014 - 1:02, édité 2 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 0:59

Tuas certainement raison, et seul Jack pourra y faire quelque chose...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 11:06

Il y a une autre erreur qui n'est pas captée par ON_ERROR. Elle génère un plantage par "I/O-error 22": c'est l'ouverture en écriture d'un fichier qui est ouvert en écriture par un autre programme. Générez le code suivant en EXE et lancez-le: il affichera "réussi". Laissez le programme actif et lancez-lé une seconde fois: il n'affichera pas "échoué", mais plante avec une erreur.

Code:
label bad
on_error_goto bad
file_open_write 1,"test.txt"
off_error_goto
message "réussi"
end
bad:
off_error_goto
message "échoué"
end
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 12:04

Salut tout le monde
Salut Klaus

Personnellement, je vois la chose non pas comme un bug de PANORAMIC, mais comme une erreur de programmation très fréquente de la part de tous (ou presque tous) les panoramiciens.
D’ailleurs j’ai parlé de ce problème je ne sais plus où.

J’ai toujours appris (avec la poignée de langages que j’ai utilisés quand j’avais 30 ans de moins que maintenant) qu’il est nécessaire de fermer tout fichier ouvert par quelque chose comme OPEN après avoir effectué les traitements sur lui et ce, au plus tard avant la fin du programme.  

J’ai remarqué que panoramic n’exige pas une telle précaution et les choses peuvent se dérouler d’une façon incompréhensible.
Pour ma part, je ferme toujours les fichiers ouverts avant de terminer mon programme.
Je me rappelle que j’ai écrit sur ce Forum que c’est une règle d’or le fait de CLOSE un fichier après l’avoir OPEN.

L'erreur (dans le seconde exécution) est due au fait que le fichier est déjà ouvert et ne peut pas être réouvert une seconde fois.

Si dans l’exemple que tu as donné, tu ajoutes file_close 1 , il n’y aura plus d’erreur.

Code:

label bad
on_error_goto bad
file_open_write 1,"test.txt"
file_writeln 1,"Salut tout le monde"
file_close 1
off_error_goto
message "réussi"
end
bad:
off_error_goto
message "échoué"
end

Qu'en pense-tu Klaus?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 12:32

Tu n'as pas saisi ce que je voulais pointer. Le problème, c'est quand on veut accéder un fichier qui est, à ce moment-là, ouvert (et verrouillé) par un autre programme, dont on n'a pas la maitrise. C'est pour ça que j'ai fait cette petite démo: générer l'exe du code que j'ai posté, lancer cet exe, et SANS l'arrêter, le lancer une seconde fois. On devrait pouvoir intercepter une erreur "fichier ouvert par un autre programme" ou similaire. Windows le fait bien, pour ses programmes - donc, l'information est disponible et accessible. Mais Panoramic ne traite pas ce cas et le plantage arrive.

Ce que je demande, c'est que le noyau de Panoramic intercepte cette erreur et déclenche une erreur interceptable dans le style Panoramic.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 13:01

Pour être encore plus précis, j'ai constaté que la commande FILE_RENAME intercepte correctement le cas où le fichier est verrouillé par un autre programme, contrairement à FILE_OPEN_WRITE qui plante dans ce cas.

Pour montrer, j'ai codé les deux cas dans le petit programme ci-après. Il faut à nouveau le générer en excutable, puis le lancer 2 fois, l'une après l'autre, sans arrêter la première instance. Et tel que le code est posté, il affiche bien "échoué" au deuxième lancement.

Si par contre, on active la ligne 5 et on désactive la ligne 6, on obtient un plantage, ce qui n'est pas normal.

Voici le code:
Code:
label bad
dim test$
'
' Activer une des deux lignes 5 ou 6
' test$ = "provoquer une erreur"
test$ = "marche sans erreur"

if test$="marche sans erreur"
  if file_exists("test.txt")=1
    on_error_goto bad
    file_rename "test.txt","test.bak"
    file_delete "test.bak"
    file_open_write 1,"test.txt"
    off_error_goto
  else
    file_open_write 1,"test.txt"
  end_if
  message "réussi"
  end
end_if

if test$="provoquer une erreur"
  on_error_goto bad
  file_open_write 1,"test.txt"
  off_error_goto
  message "réussi"
  end
end_if

bad:
  off_error_goto
  message "échoué"
  end
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 17:34

Klaus, tu as certainement raison et je vois bien le problème car il y en a bien un!
Il me semble que le remède est tout à fait possible : un simple FILE_CLOSE quand on a terminé tous les traitements sur le fichier, évitera tant de dysfonctionnements.
Pourquoi s’en priver ?
Il est aussi possible que je n’ai pas tout saisi  Embarassed

Jack, c’est à toi !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 19:22

Mais non, Papydall ! C'est bien là, le problème ! Dans ma démo, j'ai pris le même programme Panoramic lancé deux fois, et qui plante ou pas, suivant l'option choisie. Mais le problème n'est pas là.

Imagine un fichier créé et gardé ouvert par un autre programme, qui travaille dessus. Ca peut être n'importe quelle application, pas forcément en Panoramic. Lorsque dans mon programme Panoramic tente de créer ce même fichier, je voudrais pouvoir intercepter une erreur Panoramic via ON_ERROR_GOTO. Or, il y a bien une erreur, mais elle n'est pas interceptable et elle plante le programme ! Brutal, non ?

Par contre, et ma petite démo le montre, si je tente de faire un RENAME de ce fichier, alors là, je reçois bien une erreur interceptable, et je peux réagir en conséquence. Eh bien, la commande FILE_OPEN_WRITE devrait faire de même, comme FILE_RENAME !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 19 Sep 2014 - 19:44

Vu sous cet angle, je ne peux que soutenir ta demande.

Jack, il y a du pain sur la planche !


 Gestion des erreurs. Tylych10
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. EmptyVen 26 Sep 2014 - 11:37

Une autre erreur qui n'est pas interceptée par ON_ERROR_GOTO:
Code:
label bad : on_error_goto bad
file_open_write 1,"XC:\test.dat"
file_writeln 1,"abc"
file_close 1
end
bad:
message "erreur"
end
Le chemin invalide dans la ligne 2 devrait déclencher le ON_ERROR_GOTO au lieu de faire I/O-eror 123.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Gestion des erreurs. Empty
MessageSujet: Re: Gestion des erreurs.   Gestion des erreurs. Empty

Revenir en haut Aller en bas
 
Gestion des erreurs.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 3d_chain et 3d_chain_break erreurs?
» Demande d'amélioration de la gestion des erreurs.
» [DOC] Quelques erreurs...
» Soulignage d'erreurs
» pourquoi ces erreurs ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: