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