about_Continue
Rövid leírás
Azt ismerteti, hogy az continue
utasítás hogyan adja vissza azonnal a programfolyamatot egy programhurok, utasítás switch
vagy utasítás elejére trap
.
Hosszú leírás
Az continue
utasítással kiléphet az aktuális vezérlőblokkból, de folytathatja a végrehajtást a teljes kilépés helyett. Az utasítás támogatja a címkéket.
A címke egy szkriptben lévő utasításhoz hozzárendelt név.
Folytatás használata hurkokban
A címkézetlen continue
utasítás azonnal visszaadja a programfolyamatot a legbelső hurok tetejére, amelyet egy for
, foreach
, do
vagy while
utasítás vezérel. A ciklus aktuális iterációja leáll, és a hurok a következő iterációval folytatódik.
Az alábbi példában a programfolyamat a ciklus elejére while
tér vissza, ha a $ctr
változó értéke 5. Ennek eredményeként az 1 és 10 közötti számok az 5 kivételével jelennek meg:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Hurok használata esetén for
a végrehajtás az <Repeat>
utasításnál folytatódik, majd a <Condition>
teszt következik. Az alábbi példában a végtelen ciklus nem fog bekövetkezni, mert a hiba a $i
kulcsszó után continue
következik be.
# <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--
}
}
A címkézett folytatás használata hurokban
A címkézett continue
utasítás leállítja az iteráció végrehajtását, és átviszi a vezérlést a célként megadott iterációra vagy switch
utasításcímkére.
Az alábbi példában a legbelső for
érték akkor fejeződik be, ha $condition
igaz, és az iteráció a második for
ciklussal folytatódik a következő időpontbanlabelB
: .
: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
}
}
}
}
Folytatás használata kapcsolóutasításban
Egy címkézetlen continue
utasítás az switch
aktuális switch
iteráció végrehajtását leállítja, és a vezérlőt a switch
felső sarokba továbbítja a következő bemeneti elem lekéréséhez.
Ha egyetlen bemeneti elem continue
van, a teljes switch
utasítás kilép.
Ha a switch
bemenet gyűjtemény, a switch
gyűjtemény minden elemét teszteli. A continue
folyamat kilép az aktuális iterációból, és a switch
következő elemmel folytatódik.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Folytatás használata trap utasításban
Ha a törzsben végrehajtott utolsó utasítás az trap
utasítás continue
, a rendszer csendben figyelmen kívül hagyja a beszorult hibát, és a végrehajtás az azt követő utasítással folytatódik, amely közvetlenül az okozott trap
hibát követi.
Ne használja a folytatást hurkon, kapcsolón vagy trapen kívül
Ha continue
olyan szerkezeten kívül használják, amely közvetlenül támogatja azt (hurkok, switch
), trap
a PowerShell megkeresi a hívásvermet egy belefoglaló szerkezethez. Ha nem talál belefoglaló szerkezetet, az aktuális futtatótér csendesen leáll.
Ez azt jelenti, hogy azok a függvények és szkriptek, amelyek véletlenül egy külső szerkezetet használnakcontinue
, amely támogatja azt, véletlenül leállíthatják a hívóikat.
Ha continue
egy folyamaton belül, például egy ForEach-Object
szkriptblokkon belül használja, nem csak kilép a folyamatból, hanem a teljes futtatókörnyezetet is leállítja.