Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
DESCRIPCIÓN BREVE
Describe la palabra clave Throw, que genera un error de terminación.
DESCRIPCIÓN LARGA
La palabra clave Throw provoca 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 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 hacer que un parámetro de función sea obligatorio.
La palabra clave Throw puede producir 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 [<expression>]
La expresión de la sintaxis 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 la palabra clave Throw se utiliza en un bloque Catch sin una expresión, vuelve a producir la RuntimeException actual. Para obtener más información, consulte about_Try_Catch_Finally.
LANZAR UNA CUERDA
La expresión opcional de 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) [], R
untimeException
+ FullyQualifiedErrorId : This is an error.
ARROJAR OTROS OBJETOS
La expresión también puede ser un objeto que produce el objeto que representa el proceso de PowerShell, como se muestra en el ejemplo siguiente:
C:\PS> throw (get-process PowerShell)
System.Diagnostics.Process (PowerShell)
At line:1 char:6
+ throw <<<< (get-process PowerShell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)
Puede utilizar 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. En el ejemplo siguiente se usa la palabra clave Throw para iniciar 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 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 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 $Error variable automática.
USO DE THROW PARA CREAR UN PARÁMETRO OBLIGATORIO
Puede utilizar la palabra clave Throw para hacer 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 se utiliza el parámetro Obligatorio, el sistema solicita al usuario el valor del parámetro requerido. Cuando se utiliza la palabra clave Throw, el comando se detiene y muestra el registro de error.
Por ejemplo, la palabra clave Throw de la subexpresión de 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 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 "The Path parameter is required."))
dir -path $path\*.xml -recurse |
sort lastwritetime |
ft lastwritetime, attributes, name -auto
}