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