Buenisimo,
 
Algo cambio es cierto :) Gracias por el análisis! No sabia lo del throw sin
parámetros, es para tenerlo en cuenta :)
 
 
Abrazo,
Damián Herrera


  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Fernando
Tubio
Sent: Friday, September 07, 2007 7:29 PM
To: [email protected]
Subject: [puntonet] Proclama para salvar instancias


..."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 <mailto:[EMAIL PROTECTED]>  
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