11.12.2011

Aprendiendo WF parte 7– Excepciones (1)

Continuando con nuestras serie de post acerca de WF, en esta ocasión nos vamos a enfocar en el manejo de excepciones dentro del workflow. Para esto, vamos a utilizar el workflow del post anterior para manejar las excepciones.

Provocando el error en el workflow

Nuestro ejemplo asume que la lista que viene como parámetro de entrada siempre viene inicializada, es decir ya esta instanciada, pero que pasaría si nos envía una lista nula? Para ver que pasaría vamos a cambiar el código en el programa de consola de la siguiente forma:

image Ahora si ejecutamos la aplicación, vamos a obtener el siguiente mensaje de error:

image

Como podemos ver en la figura anterior, la excepción se lanzo desde el workflow y nosotros no tenemos la más mínima idea de lo que puede estar ocurriendo. Aquí es donde entra el manejo de excepciones.

Agregando Excepciones al Workflow

Vamos a manejar la excepción anterior dentro del workflow utilizando las actividades que workflow foundation ya tiene construidas para tal propósito. Las mismas se pueden ver en la siguiente figura:

image

Primero vamos a agregar una figura TryCatch para meter nuestro código dentro de este. Luego dentro de la secuencia del try vamos a agregar nuestro código para manipular las colecciones.

image

Como vemos en la figura anterior tenemos un error en el workflow – signo de admiración – lo cual es provocado porque no hemos configurado el catch del bloque para el manejo de errores. Para reparar este problema vamos a agregar una excepción genérica del tipo System.Exception para procesar todos los errores que se den dentro del bloque en un solo lugar.

image

Luego hacemos click en la superficie del workflow y nos queda a disposición el bloque de catch para manejar la excepción. En la parte derecha del bloque esta el nombre de la instancia en donde vendrá encapsulada la excepción.

image

Para este ejemplo simplemente vamos a relanzar la excepción y vamos a poner un mensaje un poco más “legible” para que a la hora de manejarlo del lado del cliente se tenga una mejor noción del problema. Para esto vamos a agregar una figura de rethrow y la vamos a configurar con la instanciación de una nueva excepción y de un mensaje indicando el problema de forma general.

image

Para esto vamos a ir a las propiedades de la figura rethrow y le vamos a agregar el siguiente código.

image

Ahora nuestro workflow lucirá de la siguiente manera.

image

El siguiente paso es manejar la excepción del lado del programa para esto vamos a agregar el siguiente código del cliente de la consola.

image

Cuando ejecutamos el código anterior vamos a obtener el siguiente resultado.

image

Etiquetas de Technorati: ,

1 comentario:

Anónimo dijo...

hola quisiera el codigo de descargas musica