Share via


Om Fortsätt

Kort beskrivning

Beskriver hur -instruktionen continue omedelbart returnerar programflödet överst i en programloop, en switch -instruktion eller en trap -instruktion.

Lång beskrivning

Instruktionen continue ger ett sätt att avsluta det aktuella kontrollblocket men fortsätta körningen 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 loopar

En omärkt continue instruktion returnerar omedelbart programflödet överst i den innersta loopen som styrs av en forinstruktion , foreach, doeller while . Den aktuella iterationen av loopen avslutas och loopen fortsätter med nästa iteration.

I följande exempel återgår programflödet till toppen av loopen while om variabeln $ctr ä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 -instruktionen <Repeat> , följt av <Condition> testet. I exemplet nedan sker inte en oändlig loop eftersom minskning av $i inträffar efter nyckelordet continue .

#   <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 märkt fortsätt i en loop

En märkt continue instruktion avslutar körningen av iterationen och överför kontrollen till den riktade iterations- eller switch instruktionsetiketten.

I följande exempel avslutas den innersta for när $condition är Sant och iterationen fortsätter med den andra for loopen vid 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 fortsätt i en switch-instruktion

En omärkt instruktion i en switch avslutar körningen av den aktuella switch iterationen och överför kontrollen överst continueswitch i för att hämta nästa indataobjekt.

När det finns ett enda indataobjekt continue avslutas hela switch -instruktionen. När indata switch är en samling switch testar varje element i samlingen. Avslutar continue den aktuella iterationen switch och fortsätter med nästa element.

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

Använda fortsätt i en trap-instruktion

Om den slutliga instruktionen som körs i brödtexten en trap -instruktion är continueignoreras det fångade felet tyst och körningen fortsätter med -instruktionen omedelbart efter den som orsakade trap inträffar.

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

När continue används utanför en konstruktion som har direkt stöd för den (loopar, switch, trap) letar PowerShell upp anropsstacken efter en omslutande konstruktion. Om den inte kan hitta en omslutande konstruktion avslutas det aktuella körningsutrymmet tyst.

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

Om du använder continue i en pipeline, till exempel ett ForEach-Object skriptblock, avslutas inte bara pipelinen, och tt avslutar potentiellt hela körningsytan.

Se även

about_Break

about_For

about_Comparison_Operators

about_Throw

about_Trap

about_Try_Catch_Finally