C#: manejo de errores diferidos
Al escribir software robusto, a menudo es necesario realizar una serie de operaciones recuperables. Al leer esta nota verás lo necesario de tomar un curso de C#. Para hacer que el sistema sea robusto, cada operación de la serie se puede codificar para que sea independiente del estado de la operación anterior. Como ejemplo concreto, considera una tubería de procesamiento de archivos.
El primer paso en la tubería puede ser sondear un servidor de archivos y descargar cualquier archivo recientemente detectado. El siguiente paso sería analizar esos archivos y convertirlos a un formato más utilizable. Un tercer paso sería importar los archivos convertidos a una base de datos para su posterior procesamiento.
Si el primer paso falla después de descargar algunos de los archivos, la aplicación en su conjunto no debería abortar. Por el contrario, debería pasar al siguiente paso y comenzar a analizar los archivos que se descargaron correctamente. Esto es aceptable porque los archivos perdidos simplemente se pueden recoger durante el siguiente ciclo.
Para implementar este patrón en C#, uno generalmente tiene que usar una serie de bloques try-catch.
try { DownloadFiles(); } catch (Exception ex) { //log errors } try { ParseAndConvertFiles(); } catch (Exception ex) { //log errors } try { ImportFiles(); } catch (Exception ex) { //log errors }
Con la propuesta de gestión de errores diferidos, se puede eliminar gran parte de este código repetitivo.
#exception mode deferred DownloadFiles(); ParseAndConvertFiles(); ImportFiles(); if (Exception.LastException != null) { //log errors Exception.ClearLastException(); } #exception mode structured
Para utilizar el manejo diferido de errores, se utiliza una nueva directiva del compilador llamada "modo de excepción" o “exception mode”. Esto cambia la función actual entre el manejo estructurado de excepciones y el nuevo modo diferido.
En la siguiente nota hablaremos más de este tema. Mientras puedes ver en nuestro curso de Javascript además del enlace de renta de aulas.