Truc zarb en VB avec On Error et GoTo

Truc zarb en VB avec On Error et GoTo - Programmation

Marsh Posté le 03-08-2001 à 23:29:01    

Donc voilà le code modifié pour être postable ;) :
 
un contrôle ProgressBar1
un Timer avec 1000 comme intervalle
 
Sub Timer_Timer()
  On Error GoTo Erreur
  ProgressBar1 = ProgressBar1 + 1
Erreur :
  MsgBox "Erreur" & Err.Description
End Sub

 
Donc le problème est qu'il m'éxecute en permancence l'étiquette Erreur à chaque Timer même s'il n'y a pas d'erreur. Je sais ça parce que dans le message box y'a Erreur : et pas de description donc c'est pas le On Error qui a appelé l'étiquette.
 
Help SVP !

Reply

Marsh Posté le 03-08-2001 à 23:29:01   

Reply

Marsh Posté le 04-08-2001 à 11:51:56    

Ben c'est normal, après ProgressBar1.... il continue le code et donc erreur:, après progressbar1... ajoute
 
On error goto   ' enlever la gestion erreur
Exit sub        ' sortir du sub

Reply

Marsh Posté le 04-08-2001 à 13:53:16    

Sub Timer_Timer()
On Error GoTo Erreur
 ProgressBar1 = ProgressBar1 + 1
Exit sub
Erreur :
 MsgBox "Erreur" & Err.Description
End Sub
 
Nous venons de rajouter "exit sub"
essaye

Reply

Marsh Posté le 04-08-2001 à 17:35:30    

Ah OK faut quitter le Sub d'abord. Savais pas ! Merci.

Reply

Marsh Posté le 05-08-2001 à 09:38:08    

Les "OnError" et surtout lezs goto sont à proscrire ! C'est de la programmation-spagetti ! Rigueur nulle, plein de prob dans ton genre à gérer ...

Reply

Marsh Posté le 05-08-2001 à 11:41:04    

Et tu fais comment pour gérer les erreurs alors ?

Reply

Marsh Posté le 05-08-2001 à 11:46:01    

Dost67 a écrit a écrit :

Et tu fais comment pour gérer les erreurs alors ?  



tu n'as pas 50 moyens d'y arriver, il n'y que cette solution tout du moins simple. Aprés effectivement il existe des fonctions trés compliqués, je ne me souviens plus, je crois qu'il relève les numéro de ligne et te renvoie les erreurs. Franchement reste dans le simple avec cette méthode,elle est parfaitement fiable et fonctionne trés bien... :hello:

Reply

Marsh Posté le 05-08-2001 à 13:16:13    

Avec l'api GetLastError (je l'utilise en VC++, elle doit être accessible en VB)

Reply

Marsh Posté le 05-08-2001 à 14:02:53    

Kyle_Katarn a écrit a écrit :

Les "OnError" et surtout lezs goto sont à proscrire ! C'est de la programmation-spagetti ! Rigueur nulle, plein de prob dans ton genre à gérer ...  




On ne peut que faire du code spaghetti en VB.
D'ailleurs c'est fait pour.

Reply

Marsh Posté le 05-08-2001 à 14:09:58    

figure toi que si VB était si nul que cela, certaines version de logiceil de Microsoft n'aurait pas utilisé et n'utiliserais pas encore le VB accompagné cu C++ pour faire les logiceils.
 :gun:

Reply

Marsh Posté le 05-08-2001 à 14:09:58   

Reply

Marsh Posté le 05-08-2001 à 14:21:18    

J'utilise VB, mais pour faire de trucs à sa portée.
C'est à dire des petits progs, du VBA pour les applis windows, du VB pour faire des front end d'API développées en c++.
Mais je ne ferai jamais un gros trucs avec.
Au moins jusqu'à la version 6, le modèle objet de VB est risible. D'ailleurs MS a modifié pas mal de choses pour VB.net pour rendre VB "moderne".

Reply

Marsh Posté le 05-08-2001 à 15:05:05    

VB est un très bon language RAD, ok faut pas lui en demander bcp mais c'est pas une raison pour coder comme des porcs avec...

Reply

Marsh Posté le 06-08-2001 à 09:08:59    

Ne pas oublier un détail : ajouter On Error GoTo 0 après si ça c'est bien passé, sinon, la prochaine erreur dans le prog non déroutée, causera une tentative d'accès à l'adresse Erreur:, inaccessible en dehors de ce module (du moins en VB3).
 
Cela donne :
 
Sub Timer_Timer()  
On Error GoTo Erreur ' déroute si pb
ProgressBar1 = ProgressBar1 + 1  
On Error GoTo 0 ' ne déroute plus
Exit sub  
 
Erreur :  
MsgBox "Erreur" & Err.Description  
End Sub  
 
Le VB n'est pas aussi évolué que le C(++).
 
En 16 bits, GetLastError() n'est pas fonctionnelle, d'après mes essais. En 32, pas sûr que cela marche. A vérifier ! Il faut que la fonction daigne renseigner l'erreur de cette façon (mais c'est peut-être "caché" et fonctionnel).

Reply

Marsh Posté le 06-08-2001 à 10:36:44    

tu n'as pas besoin de mettre on error Goto 0, cela n'est pas utile a partir de la version 5.0. Il marche sans.

Reply

Marsh Posté le 06-08-2001 à 11:25:41    

Merci pour l'info.  
Suis resté à VB3. Y avait un bug pas mal à cause de cela l'autre jour (mais on ne m'y prend pas .. :) ).

Reply

Marsh Posté le 07-08-2001 à 13:19:12    

Kyle> il me semble que le "on error ... goto" est bien plus qu'un gestionnaire d'erreur, mais un veritable systeme de gestion d'exception, mais c'est à la sauce VB alors c'est un peu ... c'est VB quoi
en clair, tu geres des exception aussi avec. enfin je crois pas qu'il y ait un meilleur moyen ...
je m'explique : comment gere remplace tu le "On Error ... Goto" de ce code avec GetLastError ?
 
On Error Goto Erreur
variable = variable / 0
exit sub
Erreur:
MsgBox("Ah ben faut pas diviser par zero." )


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed