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
tryse ejecuta primero. - Si durante la ejecución de
tryocurre un error irrecuperable, el control se transfiere al bloquecatch. En caso de que no haya errores, el bloquecatchse omite. - En el bloque
catchestá disponible la variable automática$PSItem(o$_) de tipoErrorRecord, que contiene detalles de la excepción. - El bloque
finallyse 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
catchyfinally. 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: