Manejo de excepciones#

Lanzamiento de excepciones#

  • El comando throw "Ocurrió un problema" crea una excepción y detiene la ejecución del script.
  • El cmdlet Write-Error -Message "Houston, tenemos un problema." -ErrorAction Stop muestra un error, y establecer ErrorAction en Stop hace que el script se detenga con este error.

Manejo de excepciones#

El principio de manejo de errores en PowerShell se basa en la siguiente estructura:

try {
  # código donde puede ocurrir un error
}
catch {
  # código para manejar el error
}
finally {
  # código que se ejecuta siempre después de try/catch
}
  • El código en el bloque try se ejecuta primero.
  • Si durante la ejecución de try ocurre un error irrecuperable, el control se transfiere al bloque catch. En caso de que no haya errores, el bloque catch se omite.
  • En el bloque catch está disponible la variable automática $PSItem (o $_) de tipo ErrorRecord, que contiene detalles de la excepción.
  • El bloque finally se ejecuta siempre, independientemente de si ocurrió un error o no. Se utiliza para garantizar la ejecución de código importante, como cerrar conexiones o liberar recursos.
  • Se puede usar simultáneamente catch y finally. Esto permite manejar errores y, al mismo tiempo, siempre ejecutar acciones de finalización, sin importar el resultado.

Ejemplo:

try {
  throw "Ocurrió un problema"
}
catch {
  Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
}
finally {
  Write-Host "Este bloque se ejecutará siempre"
}

En este ejemplo, la excepción se lanza a través de throw, luego se captura en catch, donde se muestra un mensaje de error, y después se ejecuta finally, donde se puede colocar el código de finalización.

Este modelo simplifica la escritura de scripts confiables con manejo de errores y limpieza de recursos.

Este enfoque hacia las excepciones ayuda a crear scripts de PowerShell más robustos y fáciles de mantener, minimizando interrupciones inesperadas y asegurando una respuesta oportuna a los errores.

Para más información, puede consultar el siguiente enlace:

everything about exceptionsdocs.microsoft.com