À propos de Continuer

Description courte

Décrit comment l’instruction continue retourne immédiatement le flux du programme en haut d’une boucle de programme, d’une switch instruction ou d’une trap instruction.

Description longue

L’instruction continue fournit un moyen de quitter le bloc de contrôle actuel, mais de continuer l’exécution, plutôt que de quitter complètement. L’instruction prend en charge les étiquettes. Une étiquette est un nom que vous attribuez à une instruction dans un script.

Utilisation de boucles de poursuite

Une instruction sans étiquette continue retourne immédiatement le flux de programme en haut de la boucle la plus interne contrôlée par une forinstruction , ou foreachdowhile une instruction. L’itération actuelle de la boucle est terminée et la boucle se poursuit avec l’itération suivante.

Dans l’exemple suivant, le flux de programme retourne en haut de la while boucle si la $ctr variable est égale à 5. Par conséquent, tous les nombres compris entre 1 et 10 sont affichés à l’exception de 5 :

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

Lorsque vous utilisez une for boucle, l’exécution se poursuit à l’instruction <Repeat> , suivie du <Condition> test. Dans l’exemple ci-dessous, une boucle infinie ne se produit pas, car la décrémentation se $i produit après le continue mot clé.

#   <Init>  <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
    Write-Host -Object $i
    if ($i -eq 5)
    {
        continue
        # Will not result in an infinite loop.
        $i--
    }
}

Utilisation d’une boucle étiquetée

Une instruction étiquetée continue met fin à l’exécution de l’itération et transfère le contrôle à l’itération ou switch à l’étiquette d’instruction englobante ciblée.

Dans l’exemple suivant, l’extrémité la plus for interne est terminée quand $condition la valeur est True et l’itération se poursuit avec la deuxième for boucle à labelB.

:labelA for ($i = 1; $i -le 10; $i++) {
    :labelB for ($j = 1; $j -le 10; $j++) {
        :labelC for ($k = 1; $k -le 10; $k++) {
            if ($condition) {
                continue labelB
            } else {
                $condition = Update-Condition
            }
        }
    }
}

Utilisation de continue dans une instruction switch

Une instruction sans étiquette continue dans une switch exécution met fin à l’exécution de l’itération actuelle switch et transfère le contrôle en haut de l’élément switch d’entrée pour obtenir l’élément d’entrée suivant.

Lorsqu’un élément continue d’entrée unique quitte l’instruction entière switch . Lorsque l’entrée switch est une collection, le switch teste chaque élément de la collection. La continue sortie de l’itération actuelle et la switch suite avec l’élément suivant.

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

Utilisation de continue dans une instruction trap

Si l’instruction finale exécutée dans le corps d’une trap instruction est continue, l’erreur piégée est ignorée sans assistance et l’exécution continue avec l’instruction immédiatement après celle qui a provoqué trap la survenue.

Ne pas utiliser continuer en dehors d’une boucle, d’un commutateur ou d’une interruption

Lorsqu’il continue est utilisé en dehors d’une construction qui la prend directement en charge (boucles, switch, ), trapPowerShell recherche la pile des appels pour une construction englobante. S’il ne trouve pas de construction englobante, l’espace d’exécution actuel est arrêté silencieusement.

Cela signifie que les fonctions et les scripts qui utilisent par inadvertance une construction en dehors d’une continue construction englobante qui la prend en charge peuvent mettre fin par inadvertance à leurs appelants.

L’utilisation continue à l’intérieur d’un pipeline, comme un ForEach-Object bloc de script, ne quitte pas seulement le pipeline, tt met potentiellement fin à l’espace d’exécution entier.

Voir aussi

about_Break

about_For

about_Comparison_Operators

about_Throw

about_Trap

about_Try_Catch_Finally