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
