Busqueda local

Loading

martes, 22 de febrero de 2011

Manejo de Errores

Cuantos de ustedes tiemblan al escuchar al usuario decir: “hay un error…”, la verdad es que es casi imposible escribir un código completamente libre de errores. Después de todo, nuestra aplicación es concebida y se ejecuta de forma segura en nuestro equipo. El entorno en el cual se desarrolla, no es el mismo que el de la maquina final.
No importa lo que hagamos siempre es posible que algo salga mal…por consiguiente no debemos escatimar en esfuerzos para poder reaccionar ante alguna eventualidad que no fue considerada durante el desarrollo.
Como podemos prepararnos para que nuestra aplicación pueda madurar, y hacerse más robusta cada vez que se instale en un nuevo equipo?, existe alguna forma de controlarlo?
La mejor forma es llevar un registro de todo lo que ocurre. Puede parecer muy exagerado, pero de esta forma podemos saber que ocurrió en la maquina del usuario, que estaba haciendo, que datos habían, cuál era el entorno, etc.
El mismo Microsoft lo lleva cabo desde hace algún tiempo con sus aplicaciones, creando un paquete que envía a un servidor donde sus especialistas analizan lo que ocurrió y así pueden hacer los ajustes necesarios para que no siga ocurriendo.
En este punto tenemos que hacer la clara separación de los registros de errores, por un lado están lo que corresponden a la actividad del usuario, que bien podría llevarse en la base de datos; y por otro los que en esta ocasión son motivo del post: los errores de la aplicación.
No se trata entonces de llevar un registro de todo lo que pase, lo del usuario es un log que le sirve a quienes administran o dan soporte al sistema, lo del código es para quienes desarrollamos y damos mantenimiento al sistema.
 

La solución

Lo ideal sería llevar un registro de lo que ocurre al momento de que se presenta un error, y que este pudiera ser almacenado de la forma que el programador desee; pudiendo ser una archivo, una base de datos, un log de eventos, etc., ahora vamos a crear dos administradores: uno para almacenarlo en archivo y el otro para almacenarlo en la base de datos.
 

Administrador de Errores en archivo

Lo primero que debemos hacer es crear la interface que se empleara para estandarizar los mensajes:
log1
Una vez que tenemos esta interface podemos crear la interface para implementar nuestros administradores:
log2
Paso seguido creamos la clase que almacenara nuestros mensajes en un archivo de texto:
log3
Para probar nuestro administrador, escribiremos el siguiente código:
log4
Para el administrador de errores en una base de datos, necesitamos preparar otra interface. La mejor forma de que un usuario de nuestra aplicación pueda proporcionarnos algún mecanismo para que nuestra biblioteca acceda a nuestra base de datos, es usando el patrón de repositorio y el de Inyección de dependencia.
Para esto debemos crear una Interface para el repositorio:
log5
Al implementar nuestro administrador, debemos preparar nuestro código para que por medio de una inyección reciba el repositorio que se debe implementar usando nuestra interface:
log6
Para poder probarlo necesitamos crear un repositorio para que le inyectemos al administrador, así que para probarlo crearemos uno falso, que en vez de almacenarlo en una base de datos almacene en un archivo de texto lo que recibe:
log8
Ahora probemos todo junto:
log7
El ejemplo se basa en el Logger Pattern. Espero que les sea útil.

No hay comentarios:

Publicar un comentario