about_Throw
Descrição breve
Descreve a throw
palavra-chave que gera um erro de encerramento.
Descrição longa
A throw
palavra-chave causa um erro de encerramento. Você pode usar a throw
palavra-chave para interromper o processamento de um comando, função ou script.
Por exemplo, você pode usar a throw
palavra-chave no bloco de script de uma if
instrução para responder a uma condição ou no catch
bloco de uma try
--catch
finally
instruçã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
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : 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."
This is an error.
At line:1 char:6
+ throw <<<< "This is an error."
+ CategoryInfo : OperationStopped: (This is an error.:String) [], R
untimeException
+ FullyQualifiedErrorId : This is an error.
Jogando outros objetos
A expressão também pode ser um objeto que gera o objeto que representa o processo do PowerShell, conforme mostrado no exemplo a seguir:
throw (Get-Process pwsh)
At line:1 char:6
+ throw <<<< (get-process PowerShell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)
Você pode usar a propriedade TargetObject do objeto ErrorRecord na $Error
variável automática para examinar o erro.
$Error[0].TargetObject
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
319 26 61016 70864 568 3.28 5548 PowerShell
Você também throw
pode um objeto ErrorRecord ou uma exceção .NET. O exemplo a seguir usa a throw
palavra-chave para gerar um objeto System.FormatException .
$formatError = New-Object System.FormatException
throw $formatError
One of the identified items was in an invalid format.
At line:1 char:6
+ throw <<<< $formatError
+ CategoryInfo : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : 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âmetro. Veja about_Functions_Advanced_Parameters para a maneira correta.