about_Continue

簡短描述

描述語句如何 continue 立即將程式流程傳回至程序迴圈、 switch 語句或 trap 語句頂端。

詳細描述

continue語句提供結束目前控制區塊但繼續執行的方式,而不是完全結束。 語句支持標籤。 標籤是您指派給文稿中語句的名稱。

在迴圈中使用繼續

未標記的 continue 語句會立即將程式流程傳回至由 forforeachdowhile 語句控制的最內層循環頂端。 迴圈目前的反覆專案會終止,迴圈會繼續進行下一個反覆專案。

在下列範例中,如果$ctr變數等於 5,程式流程會傳回循環頂端while。 因此,除了5之外,會顯示介於1到10之間的所有數位:

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

    Write-Host -Object $ctr
}

使用 for 迴圈時,會在語句繼續 <Repeat> 執行,後面接著 <Condition> 測試。 在下列範例中,不會發生無限循環,因為的遞減 $i 會在 關鍵詞之後 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--
    }
}

在迴圈中使用加上標籤的繼續

加上標籤 continue 的語句會終止反覆運算的執行,並將控制權傳輸至目標封入反覆運算或 switch 語句標籤。

在下列範例中,當 為 True,且反覆運算會在的第二for個循環labelB繼續時$condition終止最for內層。

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

在 switch 語句中使用 continue

switch未標記的continue語句會終止目前switch反覆項目的執行,並將控制權傳輸至 頂端switch,以取得下一個輸入專案。

當有單一輸入項目 continue 結束整個 switch 語句時。 當 switch 輸入是集合時,會 switch 測試集合的每個元素。 會 continue 結束目前的反覆專案,而會 switch 繼續下一個專案。

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

在陷阱語句中使用continue

如果語句在主體中執行的最後一個 trap 語句為 continue,則會以無訊息方式忽略已截獲的錯誤,而執行會緊接在所造成 trap 之語句之後繼續執行。

請勿在迴圈、切換或陷阱之外繼續使用

在直接支援它的建構外部使用 時continueswitchtrapPowerShell 會查閱封入建構的呼叫堆棧。 如果找不到封入建構,則目前的 Runspace 會悄悄終止。

這表示不小心使用 continue 支援它的封入建構外部的函式和腳本,可能會不小心終止其 呼叫端

在管線內使用 continue ,例如 ForEach-Object 腳本區塊,不僅會結束管線,而且可能會終止整個 Runspace。

另請參閱