..."Esto es lo mismo que no capturar el error, en lugar de hacer esto no hagan 
nada! ...

Es casi lo mismo. Lo que cambia es el origen de la excepción. 

Examinando el stack trace,  este muestra que el origen de la excepción es el 
método donde se relanzó la misma. Si "no se hace nada", el stack trace muestra 
el método donde realmente ocurrió la excepción como origen. 

Es una diferencia sutil y francamente tampoco se me ocurren muchos escenarios 
donde esto puede ser de utilidad, particularmente si se usa en la forma en que 
lo estás mostrando, donde el Throw es la primera (o única) sentencia del Catch. 

Donde si podría tener alguna justificación, es si fuera necesario registrar la 
excepción pero no atraparla. Pero aún así, en ese caso es más común relanzar la 
excepción pero manteniendo el origen. Esto se logra invocando Throw sin 
especificar un parámetro. Por ejemplo,

Try
    ...
    ...
Catch ex As Exception

    LogException(ex)
    Throw                        ' aquí se relanza la excepción pero 
manteniendo el stack trace

End Try


Saludos,

Fernando Tubio
  

  ----- Original Message ----- 
  From: Damián Herrera 
  To: [email protected] 
  Sent: Friday, September 07, 2007 6:00 PM
  Subject: [puntonet] Proclama para salvar instancias


  Ya que estamos, yo también me sumo a la  proclama!!!

  Por todos los medios posibles evitar la siguiente estructura de código:

  Try
      ...
      ...
  Catch ex As Exception
      Throw(ex)
      ...
  End try

  Esto es lo mismo que no capturar el error, en lugar de hacer esto no hagan 
nada! Se van a ahorrar tiempo de procesamiento :) Si no, asegurense de hacer 
los rollbacks o cancelar la operación antes de la línea "Throw(ex)".


  Feliz fin de semana!
  Damián Herrera


----------------------------------------------------------------------------
    From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Diego 
Jancic
    Sent: Friday, September 07, 2007 5:44 PM
    To: [email protected]
    Subject: [puntonet] Proclama para salvar instancias


    Hola gente!,

     

    Estoy modificando un programa que hicieron muchos programadores (incluidos 
semi-seniors y seniors), y me canse de ver algunas cosas sin sentido.

    Por ese motivo estoy realizando esta proclama general, para que si alguien 
lo hace, lo evite la proxima vez. ;-)

     

    Cuando tenemos un codigo de este estilo:

     

    MiClase instancia = new MiClase();

     

    instancia = UnServicio.ObtenerDesdeBD( . );

     

    En ese caso, se estan creando 2 objetos cuando se deberia crear uno. 
Fijense que la 2da linea sobrescribe completamente la primera!!

    Y para agravar el problema, el metodo UnServicio.ObtenerDesdeBD  hace algo 
con el parecido pero llamando a la base de datos o a un WS o a donde sea.

    Entonces se termina creando una instancia por capa, cuando en realidad se 
necesita una sola (o ninguna si el metodo devuelve null)

     

    Espero haberles ahorrado aunque sea 1 segundo de procesamiento en todo el 
tiempo de vida de su aplicación.

     

    Bueno, esto fue una pequeña contribución a todos ellos que por costumbre 
repiten estas cosas desde hace mucho tiempo (ojo, hace bastante yo tambien lo 
hacia!).

     

    Saludos y Happy Programming!,

    Diego

Responder a