about_Throw

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

TEMA

about_Throw

DESCRIPCIÓN BREVE

Describe la palabra clave Throw, que genera un error de terminación.

DESCRIPCIÓN LARGA

La palabra clave Throw produce un error de terminación. Puede usar la palabra clave Throw para detener el procesamiento de un comando, una función o un script.

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

La palabra clave Throw puede producir cualquier objeto, como una cadena de mensaje de usuario o el objeto que produjo el error.

SINTAXIS

La sintaxis de la palabra clave Throw es la siguiente:

        throw [<expression>]

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, genera un error ScriptHalted.

        C:\PS> throw

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

Si se usa la palabra clave Throw en un bloque Catch sin una expresión, produce de nuevo el objeto RuntimeException actual. Para más información, consulte about_Try_Catch_Finally.

PRODUCCIÓN DE UNA CADENA

La expresión opcional en una instrucción Throw puede ser una cadena, como se muestra en el ejemplo siguiente:

        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) [], RuntimeException
            + FullyQualifiedErrorId : This is an error.

PRODUCCIÓN DE OTROS OBJETOS

La expresión también puede ser un objeto que produce el objeto que representa al proceso de PowerShell, como se muestra en el siguiente ejemplo: Insertar sección de cuerpo aquí.

        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)

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 puede producir un objeto ErrorRecord o una excepción de Microsoft .NET Framework. El ejemplo siguiente usa la palabra clave Throw para producir un 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.

ERROR RESULTANTE

La palabra clave Throw puede producir un objeto ErrorRecord. La propiedad Exception del objeto ErrorRecord contiene un objeto RuntimeException. El resto de objetos ErrorRecord y RuntimeException varían con el objeto que produce la palabra clave Throw.

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

USAR THROW PARA CREAR UN PARÁMETRO OBLIGATORIO

Puede usar la palabra clave Throw para que un parámetro de función sea obligatorio.

Se trata de una alternativa al uso del parámetro Mandatory de la palabra clave Parameter. Cuando usa el parámetro Mandatory, el sistema pide al usuario el valor de parámetro necesario. Cuando se usa la palabra clave Throw, el comando se detiene y muestra el registro de error.

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

En este caso, la palabra clave Throw produce una cadena de mensaje, pero es la presencia de la palabra clave Throw lo 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 "The Path parameter is required."))
            dir -path $path\*.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name  -auto
        }

VEA TAMBIÉN

about_Break

about_Continue

about_Scope

about_Trap

about_Try_Catch_Finally