21 nov 2010

Gestión de Excepciones - Parte I

En este artículo voy a explicas unas guías para tener en cuenta al momento de trabajar con excepciones.

Las excepciones son el mecanismo estándar para reportar errorres. Las aplicaciones y librerías no deberían usar códigos de errores para devolver errores. Además permite disparar errores desde miembros como constructores que no tienen un tipo de datos de retorno.

Guías para disparar excepciones
Las excepciones se disparan cuando un miembro no puede hacer con éxito aquello para lo cual fue diseñado. Por ejemplo
si tengo que conectarme a un end point de WCF y el mismo no responde, disparo una excepción.
A tener en cuenta:

  • No devolver códigos de error. Las excepciones son el medio primario para reportar errores.
  • No usar excepciones para controlar el flujo normal de la aplicación. Siempre que se pueda tratar de no pensaren programar para disparar excepciones. Si se pueden evitar, mejor. Ejemplo:


public class Disparo
{
public static void ShowMessage(string mensaje)
{
if(mensaje == null)
{
throw new ArgumentNullException("mensaje");
}
}

}

public class Testeo
{
public static void Procesar(List<string> mensajes)
{
foreach(string mensaje in mensajes)
{
if(mensaje !=null)
{
Disparo.ShowMessage(mensaje);
}
}
}
}


  • Tener en cuenta el gasto de performance que implica disparar excepciones.
  • No usar miembros públicos que disparen una excepción basado en un código de error. Ejemplo: void ParseoString(string value, bool dispararExcepcion);
  • Usar métodos helpers de construcción de excepciones ya que la misma excepción puede dispararse de diferentes lugares. Pero ojo, estos helpers no deben disparar la excepción, solo inicializar propiedades, sino alteraríamos el stack trace.
  • No disparar excepciones desde la cláusula finally.

No hay comentarios:

Publicar un comentario