15 de febrero de 2011

Diferencias entre “throw ex” vs “throw”

Con frecuencia en nuestros desarrollos cotidianos en .NET (C#) hacemos uso del try catch finally, pero no siempre lo usamos de forma correcta (yo me incluyo en este grupo), aunque prometo prestar más atención en usos sucesivos.

Hoy quiero hablarles de la diferencia entre usar “throw ex;” o “throw;

La diferencia principal radica en que si usamos “throw ex;” machacaríamos el valor de la propiedad StackTrace (pila de llamadas), propiedad importantísima a la hora de identificar donde se ha originado el error.

Es por ello que mi consejo es usar siempre:

try { //Hacer algo }

catch (Exception ex)

{

  //Hacer algo con la variable ex

  throw;

}

También aconsejo usar esta otra variante, si es que deseamos incluir alguna otra información

try { //Hacer algo }

catch (Exception ex)

{

  //Hacer algo con la variable ex

  throw new Exception(“Información que deseo incluir”, ex);

}

Pero nunca, nunca, nunca, deberíamos usar: “throw ex;” para elevar excepciones.

Expresiones Regulares Comunes (Ejemplos)

Este es un post inicialmente pequeño, pero que pretendo ir enriqueciendo a medida que me encuentre con la necesidad de uso de distintas expresiones regulares en mi trabajo cotidiano.

Ejemplos de Expresiones Regulares en .Net (Regular Expressions .Net)

1. Expresión Regular: Solo Números, Letras y Espacio en Blanco

//Permitir solo números, letras y espacios en blanco

Regex rex = new Regex("^[A-Z0-9 a-z]*$");

if (!rex.IsMatch(this.DocumentoNo))

  throw new Exception("La cadena no tiene el formato correcto.");

 

2. Expresión Regular: ¿Es valido el email?

//Definir si la cadena es una dirección de mail valida

public static bool IsValidEmail(this string strEmail)

{

  return Regex.IsMatch(strEmail, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");

}

 

3. Expresión Regular: Eliminar caracteres extraños

/// <summary>

/// Replace invalid characters with empty strings.

/// </summary>

public static string StringClean(string strIn)

{

  return Regex.Replace(strIn, @"[^\w\.@-]", "");

}

 

Nota: De momento solo esta, de a poco iré adicionando otras expresiones regulares, de cualquier manera los invito a compartir aquellas expresiones que consideren útiles para la comunidad de desarrolladores.

Las expresiones regulares que están incluidas, las he ido copiando de diferentes blogs, y de la ayuda del MSDN.