Try...Catch

16/12/2004 - 09:20 por C | Informe spam
Tengo una pregunta sobre esto. Yo pongo bloques try catch
finally a veces
en sitios que se que no habra una excepción. Solo por
seguridad en caso de
que falle una conexion de red, que el servidor de SQL este
apagado, o
fallase. Con lo cual en la mayor parte de los caso no se
producira
excepción. ¿Esto produce un retraso en la ejecución?
Es decir ¿Tiene algun costo a nivel rendimiento poner en
todos mi metodos el
control
de errores try catch?

Un Saludo a tod@s

Preguntas similare

Leer las respuestas

#1 Pedro Luna Montalvo
16/12/2004 - 14:16 | Informe spam
Saludos,

Creo que la pregunta no deberia ir relacionada al hecho del rendimiento,
sino de la funcionalidad.
¿Que haces con esa excepcion?
La muestras al usuario? Haces alguna operacion de mantenimiento de
integridad de la operacion?
o simplemente no haces nada con ella??

Si la respuesta es la ultima, es de mala practica de programacion, "ocultar"
excepciones que no te interesan, pues se podrias provocar que existan
ciertos bugs muy dificiles de rastrear luego (claro, siempre depende de la
complejidad de los sistemas). Es mas, deberias solo atrapar las excepciones
que tu esperan para manejarlas apropiadamente.

Para el resto de excepciones, lo unico que se esperaria es que las atrapes,
realices las acciones que reuqiera tu programa la asegurar la integridad de
los datos y la aplicacion, y volverla a lanzar.

Te pongo un ejemplo, mira el siguiente codigo:

try {
..
..
try {
fecha = DateTime.Parse(cadenaFecha);
}
catch (FormatException) {
fecha = DateTime.Now; // Digamos que tomo un predeterminado
}
..
..
..
}
catch (Exception) {
/// Aca libero recursos, o hago todo lo necesario para asegurar
la estabilidad
/// del sistema operativo, y la integridad de los datos de la
aplicacion

throw;
}



Si no tuviera que realizar ninguna accion en el catch (Exception) final,
pues simplemente omitiria esta accion y dejaria que en caso de una
exception, la misma se propague.


Sobre el rendimiento, no te preocupes por el rendimiento de los bloques try
... catch, en realidad lo que consume recursos muchas veces es la propia
accion de iniciar una excepcion y no el uso de bloques try ... catch ...
indiscriminadamente.

Asi que en resumen, el rendimiento no debe ser tu preocupacion al momento de
establecer bloques estructurados de manejo de errores, sino las buenas
practicas que deberias usar para el diseño de los mismos.



Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu
Respuesta Responder a este mensaje
#2 C
20/12/2004 - 12:24 | Informe spam
Muchas gracias,

La verdad que tienes toda la razón en el uso del
Try/Cacth, pero es que pensaba que cuanto más código
estuviera dentro de un Try/Cacth el rendimiento bajaba...

Pero lo realmente importante es la organización del código
para capturar las excepciones y no el tamaño de lo que se
encuentre dentro del Control...

Muchas gracias de nuevo y un saludo...

Saludos,

Creo que la pregunta no deberia ir relacionada al hecho


del rendimiento,
sino de la funcionalidad.
¿Que haces con esa excepcion?
La muestras al usuario? Haces alguna operacion de


mantenimiento de
integridad de la operacion?
o simplemente no haces nada con ella??

Si la respuesta es la ultima, es de mala practica de


programacion, "ocultar"
excepciones que no te interesan, pues se podrias provocar


que existan
ciertos bugs muy dificiles de rastrear luego (claro,


siempre depende de la
complejidad de los sistemas). Es mas, deberias solo


atrapar las excepciones
que tu esperan para manejarlas apropiadamente.

Para el resto de excepciones, lo unico que se esperaria


es que las atrapes,
realices las acciones que reuqiera tu programa la


asegurar la integridad de
los datos y la aplicacion, y volverla a lanzar.

Te pongo un ejemplo, mira el siguiente codigo:

try {
..
..
try {
fecha = DateTime.Parse(cadenaFecha);
}
catch (FormatException) {
fecha = DateTime.Now; // Digamos que tomo


un predeterminado
}
..
..
..
}
catch (Exception) {
/// Aca libero recursos, o hago todo lo


necesario para asegurar
la estabilidad
/// del sistema operativo, y la integridad de


los datos de la
aplicacion

throw;
}



Si no tuviera que realizar ninguna accion en el catch


(Exception) final,
pues simplemente omitiria esta accion y dejaria que en


caso de una
exception, la misma se propague.


Sobre el rendimiento, no te preocupes por el rendimiento


de los bloques try
catch, en realidad lo que consume recursos muchas


veces es la propia
accion de iniciar una excepcion y no el uso de bloques


try ... catch ...
indiscriminadamente.

Asi que en resumen, el rendimiento no debe ser tu


preocupacion al momento de
establecer bloques estructurados de manejo de errores,


sino las buenas
practicas que deberias usar para el diseño de los mismos.



Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


.

Respuesta Responder a este mensaje
#3 Karen Lopez
23/12/2004 - 23:12 | Informe spam
Deberias de pensar en la posibilidad de crear una capita que maneje las
excepciones, eso haria mas "limpia" la aplicacion

"" escribió en el mensaje
news:0e6501c4e686$7aa9a1c0$
Muchas gracias,

La verdad que tienes toda la razón en el uso del
Try/Cacth, pero es que pensaba que cuanto más código
estuviera dentro de un Try/Cacth el rendimiento bajaba...

Pero lo realmente importante es la organización del código
para capturar las excepciones y no el tamaño de lo que se
encuentre dentro del Control...

Muchas gracias de nuevo y un saludo...

Saludos,

Creo que la pregunta no deberia ir relacionada al hecho


del rendimiento,
sino de la funcionalidad.
¿Que haces con esa excepcion?
La muestras al usuario? Haces alguna operacion de


mantenimiento de
integridad de la operacion?
o simplemente no haces nada con ella??

Si la respuesta es la ultima, es de mala practica de


programacion, "ocultar"
excepciones que no te interesan, pues se podrias provocar


que existan
ciertos bugs muy dificiles de rastrear luego (claro,


siempre depende de la
complejidad de los sistemas). Es mas, deberias solo


atrapar las excepciones
que tu esperan para manejarlas apropiadamente.

Para el resto de excepciones, lo unico que se esperaria


es que las atrapes,
realices las acciones que reuqiera tu programa la


asegurar la integridad de
los datos y la aplicacion, y volverla a lanzar.

Te pongo un ejemplo, mira el siguiente codigo:

try {
..
..
try {
fecha = DateTime.Parse(cadenaFecha);
}
catch (FormatException) {
fecha = DateTime.Now; // Digamos que tomo


un predeterminado
}
..
..
..
}
catch (Exception) {
/// Aca libero recursos, o hago todo lo


necesario para asegurar
la estabilidad
/// del sistema operativo, y la integridad de


los datos de la
aplicacion

throw;
}



Si no tuviera que realizar ninguna accion en el catch


(Exception) final,
pues simplemente omitiria esta accion y dejaria que en


caso de una
exception, la misma se propague.


Sobre el rendimiento, no te preocupes por el rendimiento


de los bloques try
catch, en realidad lo que consume recursos muchas


veces es la propia
accion de iniciar una excepcion y no el uso de bloques


try ... catch ...
indiscriminadamente.

Asi que en resumen, el rendimiento no debe ser tu


preocupacion al momento de
establecer bloques estructurados de manejo de errores,


sino las buenas
practicas que deberias usar para el diseño de los mismos.



Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida