Вы находитесь на странице: 1из 3

TÓPICO

about_Throw

DESCRIÇÃO RESUMIDA
Descreve a palavra-chave Throw, que gera um erro de encerramento.

DESCRIÇÃO LONGA
A palavra-chave Throw causa um erro de encerramento. Você pode
usar a palavra-chave Throw para interromper o processamento de um
comando, uma função ou um script.

Por exemplo, é possível usar a palavra-chave Throw no bloco de


script de uma instrução If para responder a uma condição, ou
então no bloco Catch de uma instrução Try-Catch-Finally. Você
também pode usar a palavra-chave Throw em uma declaração de
parâmetro para tornar um parâmetro de função obrigatório.

A palavra-chave Throw pode acionar qualquer objeto, como uma


cadeia de caracteres de mensagem para o usuário ou o objeto que
causou o erro.

SINTAXE
A sintaxe da palavra-chave Throw é a seguinte:

throw [<expressão>]

A expressão na sintaxe de Throw é opcional. Quando a instrução


Throw não aparece em um bloco Catch e não inclui uma expressão,
gera um erro ScriptHalted.

C:\PS> throw

ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted

Se a palavra-chave Throw for usada em um bloco Catch sem uma


expressão, acionará a RuntimeException atual novamente. Para
obter mais informações, consulte about_Try_Catch_Finally.

ACIONANDO UMA CADEIA DE CARACTERES


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

C:\PS> throw "Isto é um erro."

Isto é um erro.
At line:1 char:6
+ throw <<<< "Isto é um erro."
+ CategoryInfo : OperationStopped: (Isto é um erro.:String)
[], RuntimeException
+ FullyQualifiedErrorId : Isto é um erro.
ACIONANDO OUTROS OBJETOS
A expressão também pode ser um objeto, que aciona o objeto que
representa o processo do PowerShell, conforme mostrado no
exemplo a seguir:

C:\PS> throw (get-process powershell)

System.Diagnostics.Process (powershell) At line:1 char:6


+ throw <<<< (get-process powershell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process
(powershell):Process) [], RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (powershell)

Você pode usar a propriedade TargetObject do objeto ErrorRecord


na variável automática $error para examinar o erro.

C:\PS> $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 pode acionar um objeto ErrorRecord ou uma exceção do


Microsoft .NET Framework. O exemplo a seguir usa a palavra-chave Throw para
acionar um objeto System.FormatException.

C:\PS> $formatError = new-object system.formatexception

C:\PS> throw $formatError

Um dos itens identificados tinha um formato inválido.


At line:1 char:6
+ throw <<<< $formatError
+ CategoryInfo : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : Um dos itens identificados tinha um formato
inválido.

ERRO RESULTANTE
A palavra-chave Throw 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 de acordo com o objeto acionado pela
palavra-chave Throw.

O objeto RunTimeException é encapsulado em um objeto ErrorRecord,


e o objeto ErrorRecord é salvo automaticamente na variável
automática $Error.

USANDO THROW PARA CRIAR UM PARÂMETRO OBRIGATÓRIO


Você pode usar a palavra-chave Throw para tornar um parâmetro de
função obrigatório.

Isso é uma alternativa a usar o parâmetro Mandatory da


palavra-chave Parameter. Quando você usa o parâmetro Mandatory, o
sistema solicita ao usuário o valor de parâmetro necessário.
Quando você usa a palavra-chave Throw, o comando é interrompido e
exibe o registro de erro.

Por exemplo, a palavra-chave Throw na subexpressão do parâmetro


torna o parâmetro Path obrigatório na função.

Nesse caso, a palavra-chave Throw aciona uma cadeia de caracteres


de mensagem, mas será a presença da palavra-chave Throw que irá
gerar o erro de encerramento se o parâmetro Path não for
especificado. A expressão após Throw é opcional.

function Get-XMLFiles
{
param ($path = $(throw "O parâmetro Path é obrigatório."))
dir -path $path\* -include *.xml -recurse | sort
lastwritetime | ft lastwritetime, attributes, name -auto }

CONSULTE TAMBÉM
about_Break
about_Continue
about_Scope
about_Trap
about_Try_Catch_Finally