Om Fortsätt

Kort beskrivning

Beskriver hur continue instruktionen omedelbart returnerar program flödet överst i en program slinga, en switch instruktion eller en trap instruktion.

Lång beskrivning

continueInstruktionen gör det möjligt att avsluta det aktuella kontroll blocket, men fortsätta att köra, i stället för att avsluta helt. Instruktionen stöder etiketter. En etikett är ett namn som du tilldelar till en instruktion i ett skript.

Använda Fortsätt i slingor

En omärkt continue instruktion returnerar omedelbart program flödet överst i den innersta slingan som styrs av en for , foreach -, do -eller- while instruktion. Den aktuella iterationen av loopen avslutas och loopen fortsätter med nästa iteration.

I följande exempel returnerar program Flow överst i while slingan om $ctr variabeln är lika med 5. Därför visas alla tal mellan 1 och 10 förutom 5:

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

    Write-Host -Object $ctr
}

När du använder en for loop fortsätter körningen vid <Repeat> instruktionen, följt av <Condition> testet. I exemplet nedan inträffar inte en oändlig slinga eftersom minskningen av $i inträffar efter continue nyckelordet.

#   <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--
    }
}

Använda en etikett med etiketten Fortsätt i en slinga

En märkt continue instruktion avslutar körningen av upprepnings-och överförings kontrollen till den riktade omslutande upprepnings-eller switch instruktions etiketten.

I följande exempel for avslutas innersta när $condition är Sant och upprepningen fortsätter med den andra for slingan på 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
            }
        }
    }
}

Använda Continue i en switch-instruktion

En omärkt continue instruktion inom en switch avslutar körning av den aktuella switch upprepnings-och överförings kontrollen överst i switch för att hämta nästa inobjekt.

Om det finns ett enskilt inobjekt continue avslutar hela switch instruktionen. När switch indatatypen är en samling switch testar varje element i samlingen. Den continue aktuella iterationen avslutas och switch fortsätter med nästa element.

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

Använda Continue i en trap-instruktion

Om den slutliga instruktionen som körs i brödtext a trap -instruktionen är continue , ignoreras det fångade felet tyst och körningen fortsätter med instruktionen direkt efter den som orsakade problemet trap .

Använd inte Fortsätt utanför en loop, växel eller trap

När continue används utanför en konstruktion som stöder den direkt (loopar, switch , trap ), letar PowerShell upp anrops stacken för en omsluten konstruktion. Om det inte går att hitta en omsluten konstruktion avslutas den aktuella körnings utrymme tyst.

Det innebär att funktioner och skript som oavsiktligt använder en continue utanför en omsluten konstruktion som stöder den, oavsiktligt kan avsluta sina anropare.

Om du använder continue inuti en pipeline, t. ex. ett ForEach-Object skript block, avslutar inte bara pipelinen, utan kan avsluta hela körnings utrymme.

Se även

about_Break

about_For

about_Comparison_Operators

about_Throw

about_Trap

about_Try_Catch_Finally