¿alguna vez has visto una aplicación de accidente? Si es así, usted sabe lo frustrante que puede llegar a ser y si usted es un programador, probablemente estará maldiciendo al desarrollador por no poner en el mecanismo de manejo de errores correcto en él! Y eso es exactamente de lo que trata esta pieza. El manejo de errores es una parte integral del código de una aplicación, ya que detecta errores imprevistos y garantiza que la aplicación se termine de forma segura., Al igual que con la mayoría de los lenguajes de programación, PowerShell también admite un mecanismo de manejo de errores llamado try-catch, pero antes de eso, vamos a aprender un poco sobre el manejo de errores en PowerShell.
¿por qué necesita el manejo de errores?
una pregunta bastante básica que la mayoría de ustedes ya saben. Sin embargo, vamos a tocar brevemente sobre él para reiterar algunos puntos importantes.
el manejo de Errores ayuda de las siguientes maneras.
- evita que una aplicación se bloquee.
- hace que sea fácil para el usuario saber que algo está mal y que debe ponerse en contacto con el equipo de soporte.,
- proporciona detalles sobre el error y sus posibles causas.
- Ayuda con análisis adicionales y para solucionar los problemas.
- Ofrece la opción de personalizar los mensajes de error enviados a los usuarios finales.
- hace que sea fácil mantener su código.
- Su programa podría seguir funcionando incluso después del error, dependiendo del error y su código.
- considerado como una buena práctica de programación.
ahora que hemos hablado de los beneficios del manejo de errores, veamos cómo se puede implementar en PowerShell.,
gestión de errores en PowerShell
en términos generales, hay dos tipos de errores: errores de terminación y errores de no terminación.
Errores de terminación y no terminación
como su nombre indica, los errores de terminación son aquellos que son críticos y terminan el programa abruptamente, mientras que los errores de no terminación permiten que el programa se ejecute, pero pueden dar la salida incorrecta o, a veces, incluso resultados drásticos. Ahora bien, si se está preguntando, los errores no terminantes son potencialmente más peligrosos que los errores de terminación porque no sabe qué aspectos pueden modificarse.,
algunos posibles errores de terminación están fuera de memoria y errores de sintaxis, mientras que la gran parte de los errores en la lógica de programación y los errores inesperados caen en la categoría de no terminación.
convertir errores no terminantes en errores de terminación
como programador, puede indicar a PowerShell que trate los errores no terminantes como errores de terminación, por lo que el programa se detiene si encuentra ese error en particular. Este cambio le ayuda a gestionar el error mediante el bloque try-catch de PowerShell porque, de forma predeterminada, los errores que no terminan no se pueden gestionar con el bloque try-catch.,
para convertir errores no terminantes en errores terminantes, utilice un parámetro llamado ErrorAction. Cada cmdlet admite este parámetro y está diseñado para indicar al programa qué acción debe tomar cuando encuentre un error. ErrorAction viene con las siguientes opciones
- Stop: esto detiene el programa y lo trata como un error de terminación.
- Continuar: Permite que el programa continúe y se muestra el error.
- SilentlyContinue: el programa se ejecuta y no se muestran errores.
- Ignore: ignora el error y continúa.,
- Inquire: muestra el error y comprueba si debe continuar.
- suspender: se puede usar en un flujo de trabajo de Windows PowerShell. La limitación es que no puede suspender funciones avanzadas.
la sintaxis para ErrorAction es:
$variable = Get:content \user.txt:ErrorAction Stop
Este comando cambia un error no terminante en uno terminante, para que pueda manejarlo.
creación de un bloque try-catch
Una vez que tenga un error de terminación o haya convertido un error no terminante en un error de terminación, puede manejarlo utilizando el bloque try-catch de PowerShell.,
genérico sintaxis es:
En este ejemplo, los datos del archivo se almacena en la variable de $y si hay un error, el código se obtiene para el bloque catch y se muestra el mensaje. El ejemplo anterior es básico, diseñado para darle una idea de la sintaxis y el uso. Sin embargo, en el mundo real, usará este bloque try-catch de PowerShell para obtener información sobre el error y tomar las medidas correspondientes.,
aplicaciones prácticas del bloque try-catch de PowerShell
puede acceder al registro de errores dentro del bloque catch. De hecho, el mensaje de error se almacena en la variable $_. Puede hacer cualquier cosa con este registro de error, como analizar el error, mostrar una advertencia y más. Un atributo poderoso de la variable actual es la excepción, ya que la idea es saber más sobre los eventos inesperados que causaron que el programa se detuviera. Además, la excepción en sí viene con muchos atributos como ItemName, GetType, Message, etc.,,
Por ejemplo:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
ahora que los conceptos básicos son claros, pasemos a la parte avanzada.
Puede usar el bloque catch para capturar excepciones específicas, siempre que las conozca o las anticipe. Por ejemplo, supongamos que desea que se muestre un mensaje específico si no se encuentra el archivo y otros mensajes para otras excepciones, su código debería tener este aspecto:
algunos puntos a tener en cuenta al usar try-catch
tenga en cuenta los siguientes puntos mientras usa el bloque try-catch de PowerShell.,
- no debe haber código entre las llaves de terminación del bloque try y el comando catch. En otras palabras, la palabra «catch» debería estar inmediatamente en la siguiente línea después de las llaves de cierre del bloque try
- este bloque try-catch de PowerShell es más útil para manejar los errores que anticipa que pueden ocurrir en el programa.
- El bloque catch capturará cualquier excepción lanzada dentro del bloque try independientemente de su origen.
- El comando PowerShell try-catch es una alternativa conveniente a varias sentencias if.,
- El bloque try puede ir seguido de cualquier número de bloques catch, pero deben ser consecutivos sin ningún otro código intermedio.
finally block
hay algo llamado finally block que puedes usar con try-catch. Este es un opcional y no tiene que ser utilizado en todo momento. Este bloque ejecutará el código mencionado en su interior independientemente de si hubo un error o no. Este bloque debe venir justo después de las llaves de cierre del último bloque de captura.,
por ejemplo:
en el ejemplo anterior, se agregará una entrada al archivo de registro cada vez que se intente acceder al archivo, independientemente de si se encontró o no.
Try-catch: pruébelo y evite bloqueos
El manejo de errores es una parte importante de cualquier programa, ya que evita que la aplicación se bloquee y le ayuda a analizar la posible causa del error. El bloque try-catch de PowerShell es una poderosa forma de capturar errores de terminación, para que pueda manejarlos de forma segura sin causar un bloqueo., Ayuda con el análisis detallado y una comprensión del problema también. Por estas razones, es imprescindible en los scripts de PowerShell.
Leave a Reply