Es una buena práctica usar try {} catch() {} dentro de la sentencia using si desea capturar una excepción lanzada por el código dentro del bloque using. Ahora, considere los siguientes dos ejemplos: eso explica por qué try-catch block dentro de la sentencia using es una buena práctica.
Ejemplo 1
try{
using(SomeObject so = new SomeObject){
// Perform some tasks
}
}catch(SomeException objSomeException){
// Perform some actions, if exception occurs
}
Ejemplo 2
using(SomeObject so = new SomeObject){
try{
// Perform some tasks
}catch(SomeException objSomeException){
// Perform some actions, if exception occurs
}
}
Ahora, si se produce una excepción en el desempeño de algunas tareas dentro de la instrucción using, será tanto ejemplo tener la mismos resultados. La respuesta simple es no, ¿razón?
Cuando se produce una excepción en el ejemplo 1, es atrapada por el bloque de captura, sin llegar al final del bloque de uso. Por lo tanto, el someObject en el ejemplo 1 no se eliminará correctamente. Incluso si CLR es generoso (con lo que no debe contar), la memoria utilizada por someObject en el ejemplo 1 no se recuperará (o como máximo, terminará en la recolección de GC de la Generación 2).
Donde en el caso del ejemplo 2, el bloque catch está dentro de la sentencia using. Eso significa que la ejecución llegará al final del bloque de uso. Por lo tanto, su objeto será eliminado y no tendrá que preocuparse por la fuga de memoria (deterioro,
Surround con un bloque TryCatch – SimpleVar
Con 'try/catch '. – Jon
¿Podría aclarar su pregunta? No estoy seguro de lo que estás pidiendo aquí. – Tejs