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 throw palabra clave , que genera un error de terminación de script de forma predeterminada.
Descripción larga
La throw palabra clave produce un error de terminación de script de forma predeterminada. Puede usar la throw palabra clave para detener el procesamiento de un comando, una función o un script.
A diferencia de los errores de terminación de instrucciones, la throw palabra clave desenreda toda la pila de llamadas. La ejecución se detiene completamente a menos que una try/catch instrucción o trap bloque detecte el error.
Nota:
$ErrorActionPreference puede suprimir throw. Cuando se establece SilentlyContinue en o Ignore, el error no propaga y la ejecución continúa en la siguiente instrucción. Al llamar a una función avanzada con -ErrorAction SilentlyContinue, el parámetro se traduce en un valor local $ErrorActionPreference de ámbito, por lo que también suprime throw dentro de esa función. Incluso cuando se suprime, throw todavía registra una entrada en $Error.
El Ignore valor solo impide $Error la grabación de errores de no terminación, como los generados por $PSCmdlet.ThrowTerminatingError().
Para obtener más información sobre las categorías de error y $ErrorActionPreference el comportamiento, consulte about_Error_Handling.
Por ejemplo, puede usar la throw palabra clave en el bloque de instrucciones de una if instrucción para responder a una condición o en el catch bloque de una try/catch/finally instrucción .
La throw palabra clave puede producir cualquier objeto, como una cadena de mensaje de usuario o el objeto que provocó el error.
Syntax
La sintaxis de la throw palabra clave es la siguiente:
throw [<expression>]
La expresión de la throw sintaxis es opcional. Cuando la throw instrucción no aparece en un catch bloque y no incluye una expresión, genera un error ScriptHalted .
throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Si la throw palabra clave se usa en un catch bloque sin una expresión, inicia de nuevo la excepción RuntimeException actual. Para obtener más información, consulte about_Try_Catch_Finally.
Iniciar una cadena
La expresión opcional de una throw instrucción puede ser una cadena, como se muestra en el ejemplo siguiente:
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.
Iniciar 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:
throw (Get-Process pwsh)
At line:1 char:6
+ throw <<<< (Get-Process powershell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)
Puede usar la propiedad TargetObject del objeto ErrorRecord en la $Error variable automática para examinar el error.
$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 throw puede un objeto ErrorRecord o una excepción de .NET. En el ejemplo siguiente se usa la throw palabra clave para iniciar un objeto System.FormatException .
$formatError = New-Object System.FormatException
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.
El error resultante
La throw palabra clave 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ía en función del objeto producido.
El throw objeto se ajusta en un objeto ErrorRecord y el objeto ErrorRecord se guarda automáticamente en la $Error variable automática.
Uso throw de para crear un parámetro obligatorio
A diferencia de las versiones anteriores de PowerShell, no use la palabra clave para la throw validación de parámetros. Consulte about_Functions_Advanced_Parameters para obtener la manera correcta.