You are on page 1of 3

TEMA

about_Throw
DESCRIPCIN BREVE
Describe la palabra clave Throw, que genera un error de terminacin.
DESCRIPCIN DETALLADA
La palabra clave Throw genera un error de terminacin. Puede
utilizar la palabra clave Throw para detener el procesamiento de
un comando, una funcin o un script.
Por ejemplo, puede utilizar la palabra clave Throw en el bloque
de script de una instruccin IF para responder a una condicin,
o bien, en el bloque Catch de una instruccin Try-Catch-Finally.
Tambin puede utilizar la palabra clave Throw en una declaracin
de parmetro para que un parmetro de funcin 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 [<expresin>]
La expresin en la sintaxis de Throw es opcional. Cuando la
instruccin Throw no aparece en un bloque Catch y no incluye una
expresin, se genera un error ScriptHalted.
C:\PS> throw
ScriptHalted
En lnea:1 carcter:6
+ throw <<<<
+ CategoryInfo

: OperationStopped: (:) [], RuntimeException

+ FullyQualifiedErrorId : ScriptHalted
Si se usa la palabra clave Throw en un bloque Catch sin
expresin, se vuelve a producir la actual excepcin
RuntimeException. Para obtener ms informacin, vea
about_try_catch_finally.
APLICAR LA PALABRA CLAVE THROW A UNA CADENA
La expresin opcional en una instruccin 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 lnea:1 carcter:6
+ throw <<<< "Se ha producido un error."
+ CategoryInfo
: OperationStopped: (Se ha producido un erro
r.:String) [], RuntimeException
+ FullyQualifiedErrorId : Se ha producido un error.

APLICAR LA PALABRA CLAVE THROW A OTROS OBJETOS


La expresin tambin 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 lnea:1 carcter:6
+ throw <<<< (get-process powershell)
+ CategoryInfo
: OperationStopped: (System.Diagnostics.Proc
ess (powershell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (powershell)
Se puede usar la propiedad TargetObject del objeto ErrorRecord en
la variable automtica $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

Tambin se puede aplicar la palabra clave Throw a un objeto ErrorRecord


o una excepcin 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 vlido.
En lnea:1 carcter:6
+ throw <<<< $formatError
+ CategoryInfo
: OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : Uno de los elementos identificados tiene u
n formato no vlido.
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 varan segn el objeto al que se aplique la


palabra clave.
El objeto RunTimeException est contenido en un objeto
ErrorRecord y el objeto ErrorRecord se guarda automticamente en
la variable automtica $Error.
USAR LA PALABRA CLAVE THROW PARA CREAR UN PARMETRO OBLIGATORIO
Se puede usar la palabra clave Throw para crear un parmetro de
funcin obligatorio.
Este mtodo es una alternativa al parmetro Mandatory de la
palabra clave Parameter. Cuando se usa el parmetro Mandatory, el
sistema pide al usuario el valor de parmetro 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 subexpresin del
parmetro convierte el parmetro Path en un parmetro obligatorio
de la funcin.
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 terminacin si no se especifica el parmetro
Path. La expresin que sigue a Throw es opcional.
function Get-XMLFiles
{
param ($path = $(throw "El parmetro Path es obligatorio."))
dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft
lastwritetime, attributes, name -auto
}
VEA TAMBIN
about_Break
about_Continue
about_Scope
about_Trap
about_Try_Catch_Finally

You might also like