Manejo de Excepciones? (No lo digo yo)

Pues bien, habiendo leido Exception Management Architecture Guide, solo me queda parafrasear lo siguiente (esto, de las páginas 8-9):

"You should only catch exceptions when you need to specifically perform any of the
following actions:

  • Gather information for logging
  • Add any relevant information to the exception
  • Execute cleanup code
  • Attempt to recover

If a particular method does not need to perform any of these actions, it should not
catch the exception..."

Ademas de...

"In other words, you should not use exceptions as a means to provide
your intended functionality."

y...

"Throwing exceptions is more expensive than simply returning a result to a caller. Therefore they should not be used to control the normal flow of execution through your code. In addition, excessive use of exceptions can create unreadable and unmanageable code."

En resumidas cuentas es decir, in spanish:
Usar los bloques de administracion de excepciones resultan costosos, ya que no solo incurren en aspectos de performance, el codigo pierde legilibilidad, dificultando su mantenimiento.
Se recomienda el uso de dichos bloques cuando se requiere realizar procesamientos adicicionales (rollbacks, limpieza de memoría, verificacion de estados, notificaciones, etc.)


De momento veo que actué como traductor, pero valió la pena (creo).

Saludos[at]Casa
Cross from here

Published 28/4/2008 0:27 por Jersson
Archivado en:
Comparte este post:

Comentarios

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 12:11 PM por PabloNetrix

Vale, y... entonces... ¿por qué los ejemplos de código que hay por toda la MSDN (véase el ejemplo de implementación de un MembershipProvider), están plagados de 'throws' casi en cada método?

Saludos

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 3:23 PM por Diego Juez

Seguramente sea porque envuelven la excepcion capturada. Haran un throw(new OtroTipoExcepcion(mensaje,e));

Cuanto mas alto estas en la pila de llamadas menos importa el tipo de excepcion que salta mas abajo.

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 5:42 PM por PabloNetrix

Negativo. No están encapsulando nada. Son sentencias del tipo:

if (MeHasPasadoTalParametroEnBlanco)

{

  throw new ArgumentNullException("falta parametro A");

}

if (CualquierOtraPeregrinaComprobacion)

{

  throw new ApplicationException("Explicación chorra de turno");

}

etc...

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 5:57 PM por Jersson

Hola Pablo, lo recomendable sería no usar las excepciones para controlar validaciones. De que puede hacerse, es posible, pero no se logra mucho a nivel de performance o legibilidad, dado a que una excepcion es algo "no esperado".

Saludos[at]Trabajo

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 6:40 PM por PabloNetrix

Ya, Jersson, ya... si yo opino exactamente lo mismo. Lo que yo estoy diciendo es que la que no opina lo mismo es, precisamente, la propia Microsoft, en sus propios ejemplos de código.

Y para muestra el botón del que hablaba antes:

msdn2.microsoft.com/.../6tc47t75(VS.80).aspx

Saludos

# re: Manejo de Excepciones? (No lo digo yo)

Monday, April 28, 2008 6:54 PM por Jersson

Entiendo,

bueno, lo que pueden responderte los puristas MS es que  "es solo un ejemplo"!!!

Por otro lado, no caigamos en repetir todo lo que indica la documentación msdn,estoy seguro que hay mucho que depurar (a nivel de información entregada)

Saludos[at]Trabajo