TEMA
    about_Throw

DESCRIPCIÓN BREVE
    Describe la palabra clave Throw, que genera un error de terminación.

DESCRIPCIÓN DETALLADA
    La palabra clave Throw genera un error de terminación. Puede 
    utilizar la palabra clave Throw para detener el procesamiento de 
    un comando, una función o un script. 

    Por ejemplo, puede utilizar la palabra clave Throw en el bloque 
    de script de una instrucción IF para responder a una condición, 
    o bien, en el bloque Catch de una instrucción Try-Catch-Finally. 
    También puede utilizar la palabra clave Throw en una declaración 
    de parámetro para que un parámetro de función sea obligatorio. 

    La palabra clave Throw puede aplicarse a cualquier objeto, como 
    una cadena de mensaje de usuario o el objeto que causó el error. 


 SINTAXIS
    La sintaxis de la palabra clave Throw es la siguiente:

        throw [<expresión>]


    La expresión en la sintaxis de Throw es opcional. Cuando la 
    instrucción Throw no aparece en un bloque Catch y no incluye una 
    expresión, se genera un error ScriptHalted.

        C:\PS> throw

        ScriptHalted
        En línea:1 carácter:6
        + throw <<<<
            + CategoryInfo          : OperationStopped: (:) [], RuntimeException 
            + FullyQualifiedErrorId : ScriptHalted


    Si se usa la palabra clave Throw en un bloque Catch sin 
    expresión, se vuelve a producir la actual excepción 
    RuntimeException. Para obtener más información, vea 
    about_try_catch_finally.


 APLICAR LA PALABRA CLAVE THROW A UNA CADENA
    La expresión opcional en una instrucción Throw puede ser una 
    cadena, tal y como se muestra en el ejemplo siguiente: 

        C:\PS> throw "Se ha producido un error."

        Se ha producido un error.
        En línea:1 carácter:6
        + throw <<<< "Se ha producido un error."
            + CategoryInfo          : OperationStopped: (Se ha producido un error.:String) [], RuntimeException 
            + FullyQualifiedErrorId : Se ha producido un error.


 APLICAR LA PALABRA CLAVE THROW A OTROS OBJETOS
    La expresión también puede ser un objeto donde se aplica la palabra clave 
    Throw al objeto que representa el proceso de PowerShell, tal y como se 
    muestra en el ejemplo siguiente:

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

        System.Diagnostics.Process (powershell) 
        En línea:1 carácter:6
        + throw <<<< (get-process powershell)
            + CategoryInfo          : OperationStopped: (System.Diagnostics.Process (powershell):Process) [], 
                                      RuntimeException
            + FullyQualifiedErrorId : System.Diagnostics.Process (powershell)

    Se puede usar la propiedad TargetObject del objeto ErrorRecord en 
    la variable automática $error para examinar el error.


        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    


    También se puede aplicar la palabra clave Throw a un objeto ErrorRecord 
    o una excepción de Microsoft .NET Framework. En el ejemplo siguiente se aplica 
    la palabra clave Throw a un objeto System.FormatException.

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

        C:\PS> throw $formatError

        Uno de los elementos identificados tiene un formato no válido.
        En línea:1 carácter:6
        + throw <<<< $formatError
            + CategoryInfo          : OperationStopped: (:) [], FormatException 
            + FullyQualifiedErrorId : Uno de los elementos identificados tiene un formato no válido.


 ERROR RESULTANTE
    La palabra clave Throw puede generar un objeto ErrorRecord. La 
    propiedad Exception del objeto ErrorRecord contiene un objeto 
    RuntimeException. El resto del objeto ErrorRecord y el objeto 
    RuntimeException varían según el objeto al que se aplique la 
    palabra clave.

    El objeto RunTimeException está contenido en un objeto 
    ErrorRecord y el objeto ErrorRecord se guarda automáticamente en 
    la variable automática $Error.


 USAR LA PALABRA CLAVE THROW PARA CREAR UN PARÁMETRO OBLIGATORIO
    Se puede usar la palabra clave Throw para crear un parámetro de 
    función obligatorio. 

    Este método es una alternativa al parámetro Mandatory de la 
    palabra clave Parameter. Cuando se usa el parámetro Mandatory, el 
    sistema pide al usuario el valor de parámetro requerido. Cuando 
    se usa la palabra clave Throw, el comando se detiene y muestra el 
    registro del error.

    Por ejemplo, la palabra clave Throw en la subexpresión del 
    parámetro convierte el parámetro Path en un parámetro obligatorio 
    de la función. 

    En este caso, la palabra clave Throw se aplica a una cadena de 
    mensaje, pero es la presencia de la palabra clave Throw la que 
    genera el error de terminación si no se especifica el parámetro 
    Path. La expresión que sigue a Throw es opcional.

        function Get-XMLFiles
        {
            param ($path = $(throw "El parámetro Path es obligatorio.")) 
            dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name -auto 
        }


VEA TAMBIÉN
    about_Break
    about_Continue
    about_Scope
    about_Trap
    about_Try_Catch_Finally




Tabla de contenido