Buscar..


Introducción

Este tema trata sobre los tipos de error y el manejo de errores en PowerShell.

Tipos de error

Un error es un error, uno podría preguntarse cómo podría haber tipos en él. Bueno, con powershell el error se divide en dos criterios,

  • Error de terminación
  • Error de no terminación

Como su nombre lo indica, los errores de terminación terminarán la ejecución y los errores de no terminación permiten que la ejecución continúe con la siguiente declaración.

Esto es cierto suponiendo que el valor $ ErrorActionPreference es el valor predeterminado (Continuar). $ ErrorActionPreference es una Variable de Prefrence que le dice a powershell qué hacer en caso de un error de "No Terminación".

Error de terminación

Un error de terminación se puede manejar con una captura de prueba típica, como se muestra a continuación

Try
{
    Write-Host "Attempting Divide By Zero"
    1/0
}
Catch
{
    Write-Host "A Terminating Error: Divide by Zero Caught!" 
}

El fragmento de código anterior se ejecutará y el error se detectará a través del bloque catch.

Error de no terminación

Un error de no terminación en la otra parte no se detectará en el bloque catch por defecto. La razón detrás de eso es un error de no terminación no se considera un error crítico.

Try
{
    Stop-Process -Id 123456
}
Catch
{
    Write-Host "Non-Terminating Error: Invalid Process ID"
}

Si ejecuta lo anterior, no obtendrá la salida del bloque catch, ya que el error no se considera crítico y la ejecución simplemente continuará a partir del siguiente comando. Sin embargo, el error se mostrará en la consola. Para manejar un error de no terminación, simplemente tiene que cambiar la preferencia de error.

Try
{
    Stop-Process -Id 123456 -ErrorAction Stop
}
Catch
{
    "Non-Terminating Error: Invalid Process ID"
}

Ahora, con la preferencia Error actualizada, este error se considerará un error de terminación y se detectará en el bloque catch.

Invocando errores de terminación y no de terminación:

El cmdlet Write-Error simplemente escribe el error en el programa host que invoca. No detiene la ejecución. Donde como lanzar te dará un error de terminación y detendrá la ejecución.

Write-host "Going to try a non terminating Error "
Write-Error "Non terminating" 
Write-host "Going to try a terminating Error "
throw "Terminating Error " 
Write-host "This Line wont be displayed" 


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow