Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Breve descrição
Descreve como a instrução continue retorna imediatamente o fluxo do programa para a parte superior de um loop de programa, uma instrução switch ou uma instrução trap.
Descrição longa
A instrução continue fornece uma maneira de sair do bloco de controle atual, mas continuar a execução, em vez de sair completamente. A declaração apoia rótulos.
Um rótulo é um nome que você atribui a uma instrução em um script.
Usando instruções continue em ciclos
Uma instrução continue sem rótulo retorna imediatamente o fluxo do programa para a parte superior do loop mais interno que é controlado por uma instrução for, foreach, doou while. A iteração atual do loop é encerrada e o loop continua com a próxima iteração.
No exemplo a seguir, o fluxo do programa retorna à parte superior do loop de while se a variável $ctr for igual a 5. Como resultado, todos os números entre 1 e 10 são exibidos, exceto 5:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Ao usar um loop for, a execução continua na instrução <Repeat>, seguida pelo teste <Condition>. No exemplo abaixo, um loop infinito não ocorrerá porque o decréscimo de $i ocorre após a palavra-chave 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--
}
}
Usando uma instrução continue com rótulo num ciclo (loop)
Uma instrução continue rotulada encerra a execução da iteração e transfere o controle para a iteração de inclusão direcionada ou para o rótulo da instrução switch.
No exemplo a seguir, o for mais interno é encerrado quando $condition é True e a iteração continua com o segundo loop de for em 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
}
}
}
}
Usando continue numa declaração switch
Uma instrução continue não rotulada dentro de um switch encerra a execução da iteração switch atual e transfere o controle para a parte superior do switch para obter o próximo item de entrada.
Quando há um único item de entrada, o continue termina toda a instrução switch.
Quando a entrada switch é uma coleção, o switch testa cada elemento da coleção. O continue sai da iteração atual e o switch continua com o próximo elemento.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Usando continue numa instrução de trap
Se a instrução final executada no corpo de uma instrução trap for continue, o erro detetado é silenciosamente ignorado e a execução continua com a instrução imediatamente seguinte àquela que causou a ocorrência de trap.
Não use continuar fora de um loop, switch ou trap
Quando continue é usado fora de uma construção que oferece suporte direto a ele (loops, switchtrap), o PowerShell procura pilha de chamadas para uma construção anexa. Se não for possível encontrar uma estrutura envolvente, o ambiente de execução atual será encerrado silenciosamente.
Isso significa que funções e scripts que usam inadvertidamente um continue fora de uma construção anexa que o suporta, podem inadvertidamente encerrar seus chamadores .
Usar continue dentro de um pipeline, como um bloco de script ForEach-Object, não apenas sai do pipeline, mas potencialmente encerra todo o espaço de execução.