Partilhar via


Sobre o Throw

BREVE DESCRIÇÃO

Descreve a palavra-chave Lançamento, que gera um erro de terminação.

LONGA DESCRIÇÃO

A palavra-chave lançamento provoca um erro de terminação. Pode utilizar a palavra-chave 'Lançar' para impedir o processamento de um comando, função ou script.

Por exemplo, pode utilizar a palavra-chave 'Lançar' no bloco de scripts de uma declaração se responder a uma condição ou no bloco de captura de uma declaração de Try-Catch-Finally. Também pode utilizar a palavra-chave 'Lançar' numa declaração de parâmetro para tornar obrigatório um parâmetro de função.

A palavra-chave Lançamento pode lançar qualquer objeto, como uma linha de mensagem do utilizador ou o objeto que causou o erro.

SINTAXE

A sintaxe da palavra-chave Lançamento é a seguinte:

throw [<expression>]

A expressão na sintaxe do Lançamento é opcional. Quando a declaração de Lançamento não aparece num bloco de captura, 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 Lançamento for utilizada num bloco de captura sem expressão, volta a lançar a atual Versão Runtime. Para mais informações, consulte about_Try_Catch_Finally.

JOGANDO UMA CORDA

A expressão opcional numa declaração de Lançamento pode ser uma corda, como mostra o seguinte exemplo:

C:\PS> 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 atira o objeto que representa o processo PowerShell, como mostra o seguinte exemplo:

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

System.Diagnostics.Process (PowerShell)
At line:1 char:6
+ throw <<<<  (get-process PowerShell)
+ CategoryInfo          : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)

Pode utilizar a propriedade TargetObject do objeto ErrorRecord na $error variável automática 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

Também pode lançar um objeto ErrorRecord ou uma exceção Quadro Microsoft .NET. O exemplo a seguir utiliza a palavra-chave Lançamento para lançar um objeto System.FormatException.

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

C:\PS> 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.

ERRO RESULTANTE

A palavra-chave Lançamento pode gerar um objeto ErrorRecord. A propriedade de Exceção do objeto ErrorRecord contém um objeto RuntimeException. O restante do objeto ErrorRecord e do objeto RuntimeException variam com o objeto que a palavra-chave Lançamento lança.

O objeto RunTimeException está embrulhado num objeto ErrorRecord e o objeto ErrorRecord é automaticamente guardado na variável automática $Error.

USANDO O THROW PARA CRIAR UM PARÂMETRO OBRIGATÓRIO

Pode utilizar a palavra-chave 'Lançar' para tornar obrigatório um parâmetro de função.

Esta é uma alternativa à utilização do parâmetro obrigatório da palavra-chave Parâmetro. Quando utiliza o parâmetro Obrigatório, o sistema solicita ao utilizador o valor do parâmetro necessário. Quando utiliza a palavra-chave Lançamento, o comando para e apresenta o registo de erro.

Por exemplo, a palavra-chave lançar na subexpressão do parâmetro faz do parâmetro Caminho um parâmetro necessário na função.

Neste caso, a palavra-chave Lançamento lança uma corda de mensagem, mas é a presença da palavra-chave Lançamento que gera o erro de terminação se o parâmetro Caminho não for especificado. A expressão que se segue Throw é opcional.

function Get-XMLFiles
{
  param ($path = $(throw "The Path parameter is required."))
  dir -path $path\*.xml -recurse |
    sort lastwritetime |
      ft lastwritetime, attributes, name  -auto
}

VER TAMBÉM

about_Break

about_Continue

about_Scopes

about_Trap

about_Try_Catch_Finally