VB.Net - Boucle For - Try Catch [Résolu]

Signaler
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
Bonjour,

Je cherche comment faire pour passer au 'Next' dans une boucle For en cas d'erreur.

For Each Ligne dans FichierCVS

    Try
        Traitement (Ligne)
    Catch
       'Comment Aller a Next ?
    End Try

'Code ne pouvant etre executer en cas d'erreur du traitement
    Excecution Code

Next

Comment faire pou executer le 'Next' suivant ? Exit For quitte la boucle sans executer la ligne suivante, ce qui ne m'arrange pas vraiement.

Je m'en remet a vous :)

Cordialement,

Syl

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Un GOTO quelle horreur. VADE RETRO. Et en plus tu déclare une variable du même nom que l'étiquette pour ajouter à la confusion.
RAPPEL : GOTO ne devrait jamais être utiliser dans un langage évènementiel, c'est une instruction qui date des ancetres du Basic et qui ne devrait plus du tout exister dans VB

[auteur/JOTHECRACKER/25133.aspx jothecracker] > Utilise l'instruction Continue









---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
1
Merci a tous pour vos réponses,

Je vois que la question a pose polémique :)

Je suis partis sur la solution de Casy, j'ajouterais ceci :

"Mot clé largement utilisé dans différents
langages comme le C++, ou le C#, le continue permet de passer à
l’itération suivante d’une boucle sans exécuter le code “restant” dans
cette boucle, c’est une rupture de séquence. Prenons un exemple simple
mais concret:
For i As Integer = 0 To 10

If i = 3 Then Continue For               ‘Si i=3, alors pas de message dans la console

Console.WriteLine(i.ToString)

Next

Ce code présente donc le “Continue For”, comme il existe le “Continue While” et le “Continue Do”."

Source : net-linq-wpf.nouvelle-bulle.com
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
3
Le bon vieux GOTO

Dim ExitTry as Variant

For Each Ligne dans FichierCVS

    Try
        Traitement (Ligne)
    Catch
       Goto ExitTry
    End Try

ExitTry:
    'Code ne pouvant etre executer en cas d'erreur du traitement
    Excecution Code

Next
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
26
Salut

Si ton catch ne fait rien
juste la capture de l'erreur et pas de juste de l'erreur throw new Exception


Excecution Code sera executé.

Bon coding
Messages postés
550
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
3
[../auteur/CASY/333139.aspx casy]

c'est vrai dans une certaine mesure, c'est maintenant une question de mentalité.
Comme le fait de passer d'un windows a un autre, on entend et
cette personne restera fidèle à son vieux windows avec ce même discourt alors qu'il
suffit d'attendre une version stable ou un service pack.
Tu ne peux pas avancer ce que tu dis sur le Goto sans savoir ce que traite le Try.
Debug en pas à pas cette procédure avec Odbg et tu verras; sa rox le goto !

De toute façon je préfère ASM à XAML et VB6 au .NET
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Y'a u truc que je ne pige pas.
Pourquoi ne pas mettre le traitement dans le try ?

For Each Ligne dans FichierCVS
    Try
        Traitement (Ligne)

         'Code ne pouvant etre executer en cas d'erreur du traitement
          Excecution Code
    Catch

    End Try
Next

__________
  Kenji
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Je répète, GOTO (il en va de même pour Gosub) ne devrait jamais être utiliser dans un langage évènementiel. Pour la gamme VB ça correspond, si mes souvenirs sont bon à la version VB4 pour la programmation sous Windows 3.1, ça remonte à près de 18 ans maintenant (1993-94).

Goto n'était acceptable en VB6 (parce qu'on n'avait pas le choix) que dans les gestionnaires d'erreur, les On Error Goto.

En .Net, si les On Error Goto existent toujours les Try Ctach sont bien plus performants et devraient être systématiquement utilisés.
L'instruction Goto n'a plus lieu d'être et je maintiens qu'elle devrait être purement et simplemnt supprimer du langage.
En plus de 10 ans de programmation professionnelle, je n'ai jamais eu besoin d'utiliser un Goto en dehors du On Error Goto (en excluant évidement les HPBasic, Basica, QBasic et autre QuickBasic)

De plus [../auteur/DUKE49/880809.aspx Duke49] dans le code que tu donne et donc l'utilisation du Goto, tu fais tout le contraire de ce qui est demandé dans la question

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php