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




Sumário