martes, octubre 24, 2006

Cerca de la Competencia

Lo confieso, estoy aprendiendo .NET. Pero no significa que esté dejando de lado a Java, por el contrario, me sirve para comparar con un poco más de fundamento las ventajas y desventajas de ambos. Por cierto, les recomiendo el blog de Ramón Bosch, de la empresa Raona, es él quién está dictando el curso actualmente. Este artículo nace de la última clase donde Ramón hizo la siguiente pregunta "Qué piensan, ¿es conveniente usar excepciones?". Yo respondí un largo y convencido siiiii......, pero sin pensar en ningún fundamento. Y cuando Ramón dijo que no, fue cuando decidí poner mi cerebro en ON y tratar de pensar porqué no y que pasaría en Java.


Por qué No es bueno abusar de las excepciones

No hay que olvidar el objetivo de las excepciones, que es informar acerca de algo "excepcional", algo que no estaba contemplado. Yo mismo he cometido durante mucho tiempo el error de usar las excepciones para controlar lógica de programación. Por ejemplo: si creo para mi capa de negocio una excepción BusinessException para representar una condición de error en algún cálculo de la capa de negocio, eso está MAL!.
En lugar de eso debería encontrar otra forma como el retorno de un método que realiza el cálculo, o simplemente escribir un par de líneas de código adicionales y evitar que suceda el error, después de todo, se puede prever.

Qué pasa en Java con el manejo de las excepciones

En principio, si se ejecuta un bloque try sin que aparezca ninguna excepción, no se añade ningún procesamiento extra, sin embargo, depende de la máquina virtual que estemos ejecutando. Ahora, si se atrapa una excepción en un bloque catch, tendremos un procesamiento extra significativo. Esto se debe, principalmente a que se debe analizar todo la pila de llamadas (el famoso printStackTrace()).
Generalmente, en cuanto a performance de ejecución, la ejecución una excepción puede compararse con varios cientos de líneas de código.

Les recomiendo este PDF de la Sun Java One, se titula "Java Technology Performance Myths Exposed".

También Recomiendo el libro "Java Performance Tuning" para mayor información. Pueden comprarlo pero también pueden encontrarlo en el em...., ya saben donde.

Saludos PF

3 Comments:

At 2:49 a. m., Blogger dracof said...

Oye, y si tengo metodos en mis objetos de negocio que retornan algo, pero dentro de ellos manejo muchos tipos de errores, por ejemplo, usuario no existe, no se realizo cobranza, etc, etc, como le informo a la capa de presentacion de estos errores.

 
At 10:49 a. m., Blogger Pablo Frias said...

Dracof:
Simplemente tienes que tener en tu clase de negocio, una colección de errores (por ejemplo, un ArrayList).
En la capa de presentación verificas si ese vector está vacío o no. Si no está vacío, muestras el error correspondiente.
De esta manera, no usamos excepciones como condicionales "if".

Saludos

 
At 11:02 a. m., Blogger Dracof said...

Entonces ese ArrayList lo paso como argumento, si hay errores los agrego y en la presentacion lo tomo de nuevo?

 

Publicar un comentario

<< Home