Share via


關於繼續

簡短描述

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

完整描述

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

在迴圈中使用繼續

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

在下列範例中,如果$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$condition,最內層for會終止,而反覆項目會繼續執行位於 labelB的第二個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 發生之語句之後的 語句繼續執行。

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

continue 直接支援它的建構外部使用 時, (迴圈 、 switchtrap) ,PowerShell 會查閱封入建構的 呼叫堆棧 。 如果找不到封入建構,則會以無訊息方式終止目前的 Runspace。

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

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

另請參閱

about_Break

about_For

about_Comparison_Operators

about_Throw

about_Trap

about_Try_Catch_Finally