Truc zarb en VB avec On Error et GoTo - Programmation
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
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
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 ...
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...
Marsh Posté le 05-08-2001 à 13:16:13
Avec l'api GetLastError (je l'utilise en VC++, elle doit être accessible en VB)
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.
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.
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".
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...
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).
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.
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 .. ).
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." )
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 !