try tipos que propiedades new las generar existen excepciones excepcion error como catch c# exception-handling try-catch using

c# - tipos - Si ocurre una excepción dentro de una declaración using, ¿el objeto sigue siendo eliminado?



que tipos de excepciones existen en c# (4)

Si ocurre una excepción dentro de una declaración using, ¿el objeto sigue siendo eliminado?

La razón por la que pregunto es porque estoy tratando de decidir si poner una prueba atrapada alrededor de todo el bloque de código o dentro de la declaración de uso interno. Teniendo en cuenta que ciertas excepciones se vuelven a lanzar por diseño dentro del bloque catch.

using (SPSite spSite = new SPSite(url)) { // Get the Web using (SPWeb spWeb = spSite.OpenWeb()) { // Exception occurs here } }


La instrucción using provoca que se genere un patrón de dispose completo y adecuado, por lo que la respuesta es sí.


Sí lo hace. Es como envolver tu código en una prueba final (y deshacerse finalmente).


Sí lo harán.

using(SPWeb spWeb = spSite.OpenWeb()) { // Some Code }

es equivalente a

{ SPWeb spWeb = spSite.OpenWeb(); try { // Some Code } finally { if (spWeb != null) { spWeb.Dispose(); } } }

Editar

Después de responder a esta pregunta, escribí una publicación más detallada acerca de la construcción IDisposable y Using en mi blog.


Sí. Una instrucción using traduce aproximadamente en la siguiente construcción:

IDisposable x; try { ... } finally { x.Dispose(); }