about_Continue
Description courte
Décrit comment l’instruction continue
retourne immédiatement le flux de 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 poursuivre 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 continuer dans
Une instruction non étiquetée continue
retourne immédiatement le flux de programme en haut de la boucle la plus interne contrôlée par une for
instruction , foreach
, do
ou while
. L’itération actuelle de la boucle est terminée et la boucle continue 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
}
Lors de l’utilisation d’une for
boucle, l’exécution se poursuit au niveau de l’instruction <Repeat>
, suivie du <Condition>
test. Dans l’exemple ci-dessous, une boucle infinie ne se produit pas, car la décrémentation de $i
se 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’un continue étiqueté dans une boucle
Une instruction étiquetée continue
met fin à l’exécution de l’itération et transfère le contrôle à l’itération ou à l’étiquette switch
d’instruction englobante ciblée.
Dans l’exemple suivant, la boucle la plus for
interne se termine lorsque $condition
a la valeur True et que l’itération continue 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 continuer dans une instruction switch
Une instruction non étiquetée continue
dans une switch
exécution de l’itération actuelle switch
et transfère le contrôle vers le haut du switch
pour obtenir l’élément d’entrée suivant.
Lorsqu’il existe un seul élément continue
d’entrée quitte l’instruction entière switch
.
Lorsque l’entrée switch
est une collection, le switch
teste chaque élément de la collection. Le continue
quitte l’itération actuelle et le switch
continue avec l’élément suivant.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Utilisation de continuer dans une instruction d’interruption
Si l’instruction finale exécutée dans le corps d’une trap
instruction est continue
, l’erreur piégée est ignorée en mode silencieux et l’exécution continue avec l’instruction immédiatement après celle qui a provoqué trap
l’événement.
N’utilisez pas continuer en dehors d’une boucle, d’un commutateur ou d’une interruption
Quand continue
est utilisé en dehors d’une construction qui la prend directement en charge (boucles, switch
, trap
), PowerShell recherche la pile d’appels pour une construction englobante. S’il ne trouve pas de construction englobante, l’espace d’exécution actuel se termine silencieusement.
Cela signifie que les fonctions et les scripts qui utilisent par inadvertance un continue
élément extérieur à une construction englobante qui le prend en charge peuvent arrêter par inadvertance leurs appelants.
L’utilisation continue
à l’intérieur d’un pipeline, comme un ForEach-Object
bloc de script, non seulement quitte le pipeline, mais elle met potentiellement fin à l’ensemble de l’espace d’exécution.