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

6 comentarios sobre “Manejo de Excepciones? (No lo digo yo)”

  1. 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

  2. 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.

  3. 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…

  4. 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

  5. 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

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *