Partilhar via


about_Throw

Breve descrição

Descreve a throw palavra-chave, que gera um erro de terminação de script por defeito.

Descrição longa

A throw palavra-chave causa um erro de terminação de script por defeito. Você pode usar a throw palavra-chave para interromper o processamento de um comando, função ou script.

Ao contrário dos erros de terminação de instruções, a throw palavra-chave desenrola toda a pilha de chamadas. A execução para completamente, a menos que o erro seja detetado por um try/catch bloco ou trap sentença.

Observação

$ErrorActionPreference pode suprimir throw. Quando definido como SilentlyContinue ou Ignore, o erro não se propaga e a execução continua na próxima instrução. Ao chamar uma função avançada com -ErrorAction SilentlyContinue, o parâmetro traduz-se num valor local $ErrorActionPreference no escopo, pelo que também suprime throw dentro dessa função. Mesmo quando suprimido, throw ainda regista uma entrada em $Error. O Ignore valor apenas impede $Error o registo para erros não terminantes, como os gerados por $PSCmdlet.ThrowTerminatingError().

Para mais informações sobre categorias de erro e $ErrorActionPreference comportamento, consulte about_Error_Handling.

Por exemplo, pode usar a throw palavra-chave no bloco de instruções de uma if instrução para responder a uma condição ou no catch bloco de uma try/catch/finally afirmação.

A throw palavra-chave pode lançar qualquer objeto, como uma cadeia de caracteres de mensagem do usuário ou o objeto que causou o erro.

Sintaxe

A sintaxe da palavra-chave é a throw seguinte:

throw [<expression>]

A expressão na throw sintaxe é opcional. Quando a throw instrução não aparece em um catch bloco e não inclui uma expressão, ela gera um erro ScriptHalted .

throw
Exception: ScriptHalted

Se a throw palavra-chave for usada em um catch bloco sem uma expressão, ela lançará o RuntimeException atual novamente. Para obter mais informações, consulte about_Try_Catch_Finally.

Jogando uma corda

A expressão opcional em uma throw instrução pode ser uma cadeia de caracteres, conforme mostrado no exemplo a seguir:

throw "This is an error."
Exception: This is an error.

Atirar outros objetos

A expressão também pode ser um objeto que lança o objeto que representa o processo do PowerShell, conforme mostrado no exemplo a seguir:

throw (Get-Process pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

Você pode usar a propriedade TargetObject do objeto ErrorRecord na $Error variável automática para examinar o erro.

$Error[0].TargetObject
 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    125   174.44     229.57      23.61    1548   2 pwsh
     63    44.07      81.95       1.75    1732   2 pwsh
     63    43.32      77.65       1.48    9092   2 pwsh

Você também throw pode um objeto ErrorRecord ou uma exceção .NET. O exemplo a seguir usa a throw palavra-chave para lançar um objeto System.FormatException .

$formatError = New-Object System.FormatException
throw $formatError
OperationStopped: One of the identified items was in an invalid format.

O erro resultante

A throw palavra-chave pode gerar um objeto ErrorRecord . A propriedade Exception do objeto ErrorRecord contém um objeto RuntimeException . O restante do objeto ErrorRecord e do objeto RuntimeException varia dependendo do objeto lançado.

O throw objeto é encapsulado em um objeto ErrorRecord e o objeto ErrorRecord é salvo automaticamente na $Error variável automática.

Usando throw para criar um parâmetro obrigatório

Ao contrário das versões anteriores do PowerShell, não use a throw palavra-chave para validação de parâmetros. Veja about_Functions_Advanced_Parameters para a maneira correta.

Consulte também